`
luliangok
  • 浏览: 816926 次
文章分类
社区版块
存档分类
最新评论

AspNetForums中基于角色的权限控制

 
阅读更多

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 方法(GETPOST)是可配置的,并且可被配置为允许或拒绝访问用户组或角色组。这个方法也被应用到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://blog.joycode.com/dotey/archive/2005/02/24/44791.aspx

分享到:
评论

相关推荐

    AspNetForums 英文版

    DotNet 源代码,纯英文的 Vs2003

    AspNetForums 2.0 Beta

    ASP.NET Forums Alpha Release Notes Please refer to these release notes before and after installing the ASP.NET Forums preview.

    ChinaMVP论坛 v1.3

    "ChinaMVP论坛 v1.3" 是一个基于ASP.NET技术开发的中文论坛社区软件,它是AspNetForums的汉化和改进版本。这个版本旨在提供一个适合中国用户的在线交流平台,便于用户讨论各种IT相关的话题,分享技术知识,以及进行...

    Asp.Net Forums v2.3.2130 官方中文版

    更新说明: 注册/登录/发贴验证码 图片水印 重构DataProvider模型 发帖增加CuteEditor编辑器支持 修复首页最下面的用户IP和位置信息BUG 用户操作消息通知 多选删除回复贴子 ...私人消息分页 私人消息加密

    个人网站(.net 2.0+access)

    标题 "个人网站(.net 2.0+access)" 提及的是一个基于 .NET Framework 2.0 和 Access 数据库构建的个人网站项目。这个网站包含多种功能,如音乐播放、电影展示、个人相册的上传与下载,以及论坛交流。让我们详细...

    中国区mvp论坛

    AspNetForums 的汉化版和改写版,主要改写在于: 1、修改了邮件发送程序,设计了可发送需要身份验证的邮件发送组件。 2、设计了一个统一用户群组件(OneUsers.dll),只要你使用 OneUsers 的用户群(数据库可以使用...

    三层架构的分析

    - **AspNetForums**:一个基于ASP.NET的论坛系统,采用了Provider模型来支持多种数据库类型。 - **Asp.Net2.0**:内置了Provider模型,使得开发人员能够轻松地构建支持多种数据源的应用程序。 - **DotNetNuke**:一...

Global site tag (gtag.js) - Google Analytics