最近使用HttpModule实现了一个基于角色的身份验证。我将我的代码贴出,欢迎大家批评指正。程序是以用asp.net 2.0实现的。关于HttpModule的介绍网上有很多的资料,我这里就不介绍了:)

首先,建立一个cs文件:AuthenticateModule.cs。在里面建一个类:AuthenticateModule,这个类实现IHttpModule接口。VS会自动为你添加IHttpModule接口的两个方法:(虽然同样的功能也可以在Globe.asax中实现,但是放到Globe.asax文件中以后,它会和网站程序一起编译。以后如果这个身份验证的模块需要维护,也会使网站程序重新编译。而把身份验证模块单独编译成一个dll文件,则不存在这个问题。而且这个dll文件以后可以在不同的程序中使用)

public void Dispose()public void Init(HttpApplication context)

Init方法中添加以下代码:

context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);

为什么要在PreRequestHandlerExecute事件中进行处理呢,因为我需要将用户身份的信息存放在Session中,比如:用户名,用户的角色(使用字符串标明,比如:AdministratorOperator等)。而Session只有在AcquireRequestState事件之后才可以使用。而PreRequestHandlerExecute事件是在AcquireRequestState事件之后发生的。参见:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconhandlingpublicevents.asp

以下是验证的方法:

 
使用HttpModule实现基于角色的身份验证void context_PreRequestHandlerExecute(object sender, EventArgs e)

相关文章: