首页 新闻 会员 周边

httpModules权限

0
悬赏园豆:10 [已解决问题] 解决于 2011-04-07 13:45

我的网站有的页面是任何人都可以访问的,有的页面是必须要登录并具有权限才能访问的,如果没有登录,则转向登录页面,登录后则跳转到之前的页面,如果权限不够,则提示无权访问该页面,怎么利用httpModules来做呢?

天亦玄的主页 天亦玄 | 初学一级 | 园豆:32
提问于:2010-08-16 14:47
< >
分享
最佳答案
0

直接 继承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;

}

收获园豆:10
HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-17 08:55
不错
天亦玄 | 园豆:32 (初学一级) | 2010-12-21 20:51
其他回答(3)
0
邀月 | 园豆:25475 (高人七级) | 2010-08-16 14:53
0

没有必要搞这么复杂吧,在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>

jowo | 园豆:2834 (老鸟四级) | 2010-08-16 15:03
0

session或cookie来判断权限。

Astar | 园豆:40805 (高人七级) | 2010-08-16 15:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册