后台安全登陆之输入用户名和密码。。。。。。验证用户是否正确的时机我选择 Http Module来处理。
Http Module 是于应用程序集的事件息息相关的。也就是说每个请求都要经由Http Module来处理。
实现自己 Http Module 就要实现 IHttpModule接口。 IHttpModule 只有两个方法。如下:
public void Init(HttpApplication context);
public void Dispose();
Init 方法接收一个HttpApplication 类型对象参数,HttpApplication代表了当前的应用程序,我们需要在这个方法内注册
HttpApplication对象暴露给客户端的事件。可见,这个方法仅仅是用来对事件进行注册,而实际的事件处理程序,
需要我们另外写方法。Dispose方法用来释放一些资源。
下面我们来定义自己的 Http Module
/************************************************************************/
/* 进行用户验证
/************************************************************************/
public class CommonHttpModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context) //此处进行事件的注册
{
if (context == null)
{
throw new ArgumentNullException("context");
}
AuthenticationSection section1 = (AuthenticationSection)WebConfigurationManager.GetSection("system.web/authentication");
if (section1.Mode == AuthenticationMode.Forms) //判断是否为表单验证,如果是则进行事件注册
{
context.AuthenticateRequest += new EventHandler(this.Application_AuthenticateRequest);
context.PostAuthenticateRequest += new EventHandler(this.Application_PostAuthenticateRequest);
}
}
}
private void Application_PostAuthenticateRequest(object sender, EventArgs e) //主要用来验证通过验证用户的操作
private void Application_AuthenticateRequest(object sender, EventArgs e) //注册事件的方法
{
......
string formsCookieName = FormsAuthentication.FormsCookieName; //根据登陆页面生成的票据来获取票证的cookie名称,用来初始化用户的信息。
......
}
NOTE: 在Http Module 中除了判断用户是否通过验证外,还可以判断通过验证的用户属于哪些角色,拥有哪些权限。以及其他的应用程序级事件请求。
添加自定义Http Module 的方法。
<httpModules>
<add name="CommonHttpModule" type="PaWeb.Web.HttpModules.CommonHttpModule,PaWeb.Web"/>
</httpModules>
CommonHttpModule:Module 名称
PaWeb.Web.HttpModules.CommonHttpModule: 自定义Module 类文件名称。
PaWeb.Web: 自定义Module 类所在的程序集名称。