4.2用户登陆和安全验证(利用HttpModule集中处理身份检查)
2008-05-20 06:40
471 查看
在线考试系统总共包括三种用户(学生、教师、管理员)。他们分别有自己的操作权限。而这些操作分别包含在不同的页面中。为了简单的划分。系统将三种用户的操作页面分别放到了不同的路径下。下图4-5是三个用户各自的文件夹内容。
namespace ExaminationSystem.BLL.Service
上面代码展示的是真实的代码实现。我们可以看到用面向对象的方式编写代码代码的易读性得到大大的提高。UserService类从泛型的抽象类AbstractService继承了基本的CRUD操作。下面看看该方法由于继承带来的通用性。由于Student、Teacher、Admin都继承自User所以我们的登陆方法可以适用于所以的用户。所以我们只需要有一个用户登陆页面就可以了.
下面是登陆页面的登陆按钮的事件处理函数的实现。
protected void LoginButton_Click(object sender, EventArgs e)
调用CheckLogin后只要判断返回的User具体是那个用户类型。然后跳转到相应用户的默认页面。之前有个Session["User"]
= user;可以看出系统是通过Session来记录用户的身份的。因为Session是服务器端的所以它比Cookie更加的安全。由于学生考试时间和教师管理工作需要很长的时间系统将Session的超时时间从默认20分钟调整到了2小时。如果需要可以在Web.config文件中继续调整。
有了登陆的实现下面介绍如何实现用户身份检查的。因为每个页面都必须有特定的身份才能访问。因为用户登陆后已经用Session记录了用户的身份。要想限制用户对某个页面的访问只要在该页面里取出Session里的用户对象看是否是要求的角色就行了。比如想让添加班级的页面只允许Admin来访问。可以在Class.aspx页面的Page_Load事件处理函数里判断用户权限。下面代码说明了如何来防止Class.aspx被其他用户访问。
protected void Page_Load(object sender, EventArgs e)
namespace ExaminationSystem.Web
我们首先在 Init方法中注册PostAcquireRequestState处理函数。因为在该事件中Session才可以被访问到。在事件处理函数中我们首先要检查Session和Request对象是否存在。如果存在。就继续检查用户请求的页面是否和自己拥有的身份一致。可以看到是根据请求URL中是否包含teacher,student,admin来判断用户请求的页面类型的。因为每个用户的可操作页面都在不同的文件夹下。所以检查用户请求页面类型时候只需要检查请求路径中是否包含特定名称就行了。比如请求http://localhost/exam/admin/admin.aspx因为请求中包含”/admin/”所以就可以知道必须要Admin权限参能访问该页面。然后我们检查Session中的用户对象是否是Admin类型。如果不是则将请求转到默认的登陆页面。这样就完成了用户的权限管理。
namespace ExaminationSystem.BLL.Service
上面代码展示的是真实的代码实现。我们可以看到用面向对象的方式编写代码代码的易读性得到大大的提高。UserService类从泛型的抽象类AbstractService继承了基本的CRUD操作。下面看看该方法由于继承带来的通用性。由于Student、Teacher、Admin都继承自User所以我们的登陆方法可以适用于所以的用户。所以我们只需要有一个用户登陆页面就可以了.
下面是登陆页面的登陆按钮的事件处理函数的实现。
protected void LoginButton_Click(object sender, EventArgs e)
调用CheckLogin后只要判断返回的User具体是那个用户类型。然后跳转到相应用户的默认页面。之前有个Session["User"]
= user;可以看出系统是通过Session来记录用户的身份的。因为Session是服务器端的所以它比Cookie更加的安全。由于学生考试时间和教师管理工作需要很长的时间系统将Session的超时时间从默认20分钟调整到了2小时。如果需要可以在Web.config文件中继续调整。
有了登陆的实现下面介绍如何实现用户身份检查的。因为每个页面都必须有特定的身份才能访问。因为用户登陆后已经用Session记录了用户的身份。要想限制用户对某个页面的访问只要在该页面里取出Session里的用户对象看是否是要求的角色就行了。比如想让添加班级的页面只允许Admin来访问。可以在Class.aspx页面的Page_Load事件处理函数里判断用户权限。下面代码说明了如何来防止Class.aspx被其他用户访问。
protected void Page_Load(object sender, EventArgs e)
namespace ExaminationSystem.Web
我们首先在 Init方法中注册PostAcquireRequestState处理函数。因为在该事件中Session才可以被访问到。在事件处理函数中我们首先要检查Session和Request对象是否存在。如果存在。就继续检查用户请求的页面是否和自己拥有的身份一致。可以看到是根据请求URL中是否包含teacher,student,admin来判断用户请求的页面类型的。因为每个用户的可操作页面都在不同的文件夹下。所以检查用户请求页面类型时候只需要检查请求路径中是否包含特定名称就行了。比如请求http://localhost/exam/admin/admin.aspx因为请求中包含”/admin/”所以就可以知道必须要Admin权限参能访问该页面。然后我们检查Session中的用户对象是否是Admin类型。如果不是则将请求转到默认的登陆页面。这样就完成了用户的权限管理。
相关文章推荐
- 利用HttpModule集中处理身份检查
- 利用HttpModule 检查用户是否有权限打开指定的网址
- HttpModule实现用户身份验证
- 利用HttpModule 检查用户是否有权限打开指定的网址
- 利用HttpModule和forms身份验证,实现角色验证控制
- HttpModule实现用户身份验证
- 利用IPsec实现网络安全之五(Kerveros实现身份验证)
- 【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证
- 关于为了保证数据安全,让已登陆用户在不操作的情况下超时退出的处理
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- ABAP利用HTTP调用要用户验证的web service
- WCF分布式安全开发实践(5):传输安全模式之Certificate身份验证:Transport_Certificate_WSHttpBinding
- 利用SQLSERVER存储过程实现ASP用户身份验证
- 利用IPsec实现网络安全之四(CA证书实现身份验证) 推荐
- HttpModule用户的验证
- 【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证
- App登陆java后台处理和用户权限验证
- WCF分布式安全开发实践(3):传输安全模式之自定义用户名密码身份验证:Transport_UserNamePassword_WSHttpBinding
- WCF分布式安全开发实践(5):传输安全模式之Certificate身份验证:Transport_Certificate_WSHttpBinding
- forms角色验证,以普通用户身份登陆管理页面先弹出警告信息窗口