快速业务通道

ASP.NET基于角色的窗体安全认证机制

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
USE.ASPXAUTH 这个名称是任意的。要控制用户或者用户组的权限,我们可以有两种方法,一是配置在应用程序根目录下的 Web.config 文件,二是在机密目录下创建一个独立的 Web.config 文件。(后者也许会比较好。)如果是前者,这个Web.config 就应该包含有下面的内容(或者类似的内容):

程序代码

<configuration>
  <system.web>
   <authentication mode="Forms">
    <forms name=" AMUHOUSE.ASPXAUTH"
     loginUrl="login.aspx"
     protection="All"
     path="/"/>
   </authentication>
   <authorization>
    <allow users="*"/>
   </authorization>
  </system.web>
<location path="./Admin">
  <system.web>
   <authorization>
    <!-- 注意!下面几行的顺序和大小写是非常重要的! -->
    <allow roles="Administrator"/>
    <deny users="*"/>
   </authorization>
  </system.web>
</location>
<location path="./User">
  <system.web>
   <authorization>
    <!-- 注意!下面几行的顺序和大小写是非常重要的! -->
    <allow roles="User"/>
    <deny users="*"/>
   </authorization>
  </system.web>
</location>
</configuration>

为了使Web应用程序的目录之前不互相依赖,可以比较方便的改名或者移动,可以选择在每一个安全子目录下配置单独的 Web.config 文件。它只需要配置 <authorization/>节点,如下:

程序代码

<configuration>
<system.web>
<authorization>
<!-- 注意!下面几行的顺序和大小写是非常重要的! -->
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>

需要再次提醒的是,上面的角色 roles 是大小写敏感的,为了方便,你也可以把上面修改为:

<allow roles="Administrator,administrator" />

如果你想允许或者禁止多个角色对这个目录的访问,可以用逗号隔开,如:

<allow roles="Administrator,Member,User" />

<deny users="*" />

至此,我们已经为网站配置了基于角色的安全认证机制了。你可以先编译你的程序,然后尝试访问一个机密目录,例如 http://localhost/RolebasedAuth/Admin ,这时候你就会被转向到用户登录页面。如果你登录成功,并且你的角色对这个目录有访问权限,你就重新回到这个目录下。可能会有用户(或入侵者)企图进入机密目录,我们可以使用一个 Session 来存储用户登录的次数,超过一定次数就不让用户登录,并且显示"系统拒绝了你的登录请求!"。

下面,我们讨论如何根据用户角色让Web控件显示不同内容。

有时候根据用户的角色来显示内容比较好,因为你可能不想为那么多不同的角色(用户群组)制作一大堆有许多重复内容的页面。这样的网站,各种用户帐户可以并存,付费的用户帐户能够访问附加的付费内容。另一个例子是一个页面将显示一个 "进入后台管理" 按钮链接到后台管理页面如果当前用户是 "Administrator"(高级管理员)角色。我们现在就实现这个页面。

我们上面用到的 GenericPrincipal 类实现了 IPincipal 接口,这个接口有一个方法名叫做 IsInRole

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号