黑基网 首页 学院 电脑技术 查看内容

AspNetForums中基于角色的权限控制

2005-2-24 08:42| 投稿: net

摘要: 来源:http://blog.joycode.com/dotey/ AspNetForums中对于用户权限,是类似于Windows系统采用基于角色(Role)的权限控制,这样,我们就可以根据需要,设...
来源:http://blog.joycode.com/dotey/ AspNetForums中对于用户权限,是类似于Windows系统采用基于角色(Role)的权限控制,这样,我们就可以根据需要,设定不同的角色,设置各个角色的权限,并将各个用户属于不同的角色。根据用户所属的角色,来判断用户可以有哪些权限,进行哪些操作。 先看看数据库设计:forums_Users表,用户表,UserID为主键,唯一确定一个用户forums_Roles表,角色表,RoleID为主键,唯一确定一个角色forums_UsersInRoles表,用户和角色对应关系表,存储用户所在的角色forums_ForumPermissions表,角色在某版块的权限,记录了在每个版块中各个角色可以有权限进行哪些操作 再看看是如何来判断用户操作权限的:当用户登录后,要获取论坛所有版块的信息并缓存,在获取版块信息的同时,要获取当前用户在每个版块操作(如发表新帖、投票、附件等)的权限。操作权限有三种:"有权限"、"无权限"和"未设置",如果是未设置,那么就看这个操作的默认权限是什么。一个用户可以属于多个角色,每个角色对应的操作权限不一样,要判断这个用户有没有当前操作的权限,则遍历这个用户所属的所有角色,如果任一角色有权限,那么该用户就有该操作的权限。具体实现请参考源码:Components\Forums.cs中的GetForums(ForumContext forumContext, int userID, bool ignorePermissions, bool cacheable)方法和Components\Provider\ForumsDataProvider.cs中PopulateForumPermissionRightFromIDataReader方法。 角色和web.config的结合:Asp.Net有一个功能就是可以用于控制对 URL 资源的客户端访问(可参考QuickStart上的说明)。它对于用于生成请求的 HTTP 方法(GET 或 POST)是可配置的,并且可被配置为允许或拒绝访问用户组或角色组。这个方法也被应用到AspNetForums中,例如在admin目录(管理员操作相关页面)和Moderate目录(版主操作相关页面)下都有一个web.config目录,通过web.config,可以设定其所在目录的URL客户端访问权限。 以Admin目录下的web.config中的配置为例: <authorization>  <allow roles="Global Administrators" />  <allow roles="Site Administrators" />  <deny users="*" /> </authorization>这个表示对于属于Global Administrators角色和Site Administrators角色授权,其他任何用户都禁止访问该目录下的页面。因为对于部分页面,希望版主也可以进行访问,那么可以增加如下配置:    <location path="ForumAdmin.aspx">      <system.web>        <authorization>          <allow roles="Global Administrators" />          <allow roles="Site Administrators" />          <allow roles="Global Moderators" />          <allow roles="Site Moderators" />          <deny users="?" />        </authorization>      </system.web>    </location>    这样,对于/Admin/ForumAdmin.aspx这个URL,属于Global Moderators或Site Moderators角色的用户也可以有权访问。 怎么设置登录用户的角色?具体实现请参考源码:Components\Roles.cs 和文章《如何使用 Forms 身份验证创建 GenericPrincipal 对象》 附CnForums源码下载:http://bbs.openlab.net.cn/ShowThread.aspx?PostID=376725  
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

发表评论

最新评论

引用 游客 2017-11-30 14:35
YNfYAb  <a href="http://ngaknbtjkmaz.com/">ngaknbtjkmaz</a>, [url=http://nkqltpyomnhk.com/]nkqltpyomnhk[/url], [link=http://yrdorkacrejd.com/]yrdorkacrejd[/link], http://usdtjgtjjorx.com/
引用 游客 2017-11-28 06:06
RM9ITG http://www.LnAJ7K8QSpfMO2wQ8gO.com

查看全部评论(2)


新出炉

返回顶部