直接 继承IHttpModule 接口是不行的,不过可以在 Global.asax里面做处理
添加 Global.asax 文件,这里面的所有事件都是在 httpModule 里面注册的,
在Global.asax文件里面 添加 Application_Begin_Request 事件
Application_Begin_Request(objcet sender, EventArg s)
{
if(!HasRights(Request.FilePath))
{
Response.Redirect("Login.aspx");
}
}
protected static bool HasRights(string pageName)
{
bool result = false;
//这里实现你的验证规则
//大概思路是这样:
//1.用一个集合(或者表)来缓存需要验证的文件
//2.判断当前文件是否是在集合内
//3.如果是,则再判断是否有登录并且有权限,有的话则返回true
return result;
}
没有必要搞这么复杂吧,在web.config里指定下就可以呀
<location path="test.aspx"> //指定只能登陆后访问地址
<system.web>
<authorization>
<deny users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
指定登陆地址也登陆默认页如下:
<authentication mode="Forms">
<forms defaultUrl="~/Manager/MemberMain.aspx" loginUrl="~/MemberLogin.aspx" protection="All" name=".Web" timeout="30" cookieless="UseCookies" />
</authentication>
session或cookie来判断权限。