基于角色的权限设计(二)

第一部分请參看:http://blog.csdn.net/snomyc520/article/details/38677861

针对这种需求,版本号一就无能为力了(当然你也能够添加几个功能:比方分类A的新闻起草和分类B的新闻起草,再把这个功能加入到对应的角色里面去,可是这个应该不是我们要得解决方式吧,只是版本号二也是基于这个思想来解决的)。

事实上比新闻更好的样例是论坛板块的版主。

以下是版本号二的解决方式:

在版本号二的功能表中增加了一个ResourceType这个字段,这个字段用来表示对某个资源的分类(比方新闻),我们相同来模拟一下(新闻分类A的ResourceType为:NTA,分类B为:NTB):

功能表:

然后在角色表加入相应的角色,在角色功能表中加入相应的功能。

获取Functions的语句也对应地做变化:

Select FunctionID  + ‘,’ + ResourceType From角色功能表 Where RoleID In (Select RoleID From用户角色表 Where
UserID=’U1’)

权限的推断也就变成:

Functions.Contain(‘F1,NTA’);

在新加入一个分类的时候,同一时候也在功能表中添加对应的记录(当然不是在数据库里面直接加入,由和功能相关的函数来加入)。

使用这样的解决方式能够简单地对有分类的应用(比方论坛系统)的每一个分类实行不同的控制(比方VIP板块,就仅仅能拥有VIP角色的用户才干浏览、发表等,而其它板块仅仅要是注冊用户就能够使用了)。

在实际应用中FunctionID并非随便的一个字符串,而是进行了编码,其编码中包括了模块ID以及可以体现出父子关系,举个样例来说:对于论坛系统,我们给它一个模块ID为”30”,论坛的功能我们先分成2类,一类是管理类(比方删除帖子),一类是使用类(比方发帖、回帖、浏览帖子等),给管理类一个编码:01,使用类一个编码:02,我们就对FunctionID进行例如以下的编码:

300101:删除帖子

300201:发帖

300202:回帖

300203:浏览帖子

对于资源(比方某个板块1,板块的ID为:01),我们能够组合出例如以下的Functions(当然这个组合你也能够不用逗号分隔,用其它的组合方式也能够,只是不要产生歧义):

300101,01:板块1删除帖子的功能

300201,01:板块1发帖的功能

……

对于RoleID也是採用的编码方式,也能体现角色的父子关系,也能够实现角色功能的继承等(当然获取角色功能列表的SQL语句就不是如今这么简单了)。在我如今的应用里面没有实现角色的继承(尽管角色的编码体现出了角色的父子关系)。

时间: 2024-11-07 09:12:43

基于角色的权限设计(二)的相关文章

基于角色的权限设计(一)

在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案. 在权限系统中,功能(权限)是最小的单位,比如起草新闻.编辑新闻.审核新闻.删除新闻等,而角色是一类功能的集合,比如新闻编辑 这个角色,他可能有起草新闻.编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻.删除新闻等功能,给张三赋予 新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻.编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草

基于角色的权限访问控制初步

基于角色的权限访问控制(Role-Based Access Control) 角色访问控制(RBAC)引入了role的概念,目的是为了隔离user(即动作主体,subject)与privilege(权限,表示对resource的一个操作,即operation+resource).role作为一个用户(user)与权限(privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予role而不是直接给user或 group.privilege是权限颗粒,由operation和resour

ASP.NET MVC +EasyUI 权限设计(二)环境搭建

请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问common.cnblogs.com这个域名,一直出现"Aborted",非常的郁闷. 页面就是这样子的,不知道为什么,难道是不是我的3个终端有问题吧,还是园子的服务器有问题呢?还是路由器的问题呢?到现在这个问题还没解决,郁闷死了!弄得心情非常的不爽. 好吧,不在说这个问题了,开始我们的正

基于角色的权限管理系统

我们开发业务系统的时候,基本上都会涉及到权限管理模块,要求不同的人看到不同的菜单,操作不同的按钮,看到不同的数据.很多初学者面对这样的需求不知道如何下手,特别是稍微复杂点的权限,更是找不到方向,为此我们夜鹰教程网特别推出了这套基于角色的权限管理视频教程,通过给用户分配角色,给角色分配权限,来实现权限管理.这样一来,可以实现不同的人管理不同的菜单,操作不同的按钮,看到不同的数据.可以划分权限组,每个组的成员拥有相同的权限.也可以把同一个人分配到不同的权限组,具有多个权限组的权限,实现权限的组合.

基于角色的权限控制

首先要明白的有一个表就是需要记录整个项目中控制器和方法,这样在权限检测的时候就可以检测数据库对应的角色有没有这个控制器或者方法的权限, 但是需要明白的是在开发的过程中当然需要把这种权限给取消,这样在开发过程是需要增加一个控制器或者方法就不需要验证权限,然后开发好了之后就需要 在权限表中增加该控制器和方法. 一般基于角色的权限控制,需要用到下面的几张表 1.用户表2,权限表,3.角色表,4权限角色关系表5用户角色关系表 这种方式是用户通过,用户角色关系表查询出自己的角色,然后通过权限角色关系表查出

ASP.net MVC 基于角色的权限控制系统的实现

一.引言 我们都知道ASP.net mvc权限控制都是实现AuthorizeAttribute类的OnAuthorization方法. 下面是最常见的实现方式: public class CustomAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { if (!filterContext.RequestContext

ASP.NET MVC 基于角色的权限控制系统的示例教程

上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于角色的权限控制方法. 基于角色的权限控制方法概述 基于角色的权限控制系统RBAC(Role Based Access Control)是目前最流行,也是最通用的权限控制系统.所谓基于角色的权限控制,就是将各个操作权限分组,每一个组就是一个角色,举个例子:管理员拥有所有的权限,编辑就只拥有写文章和发布

webapi框架搭建-安全机制(三)-基于角色的权限控制

webapi框架搭建系列博客 上一篇已经完成了"身份验证",如果只是想简单的实现基于角色的权限管理,我们基本上不用写代码,微软已经提供了authorize特性,直接用就行. Authorize特性的使用方法 配置Authorize 比较简单,直接上代码 using System.Collections.Generic; using System.Net.Http; using System.Security.Claims; using System.Web.Http; using we

从零开始——基于角色的权限管理01(补充)

此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验证码,进行验证 首先到userDao中,执行login方法,判断是否存在这组用户名和密码 接着到roleDao中,执行getRoleNameById以获取角色名 最后,进入main.jsp中 2)在main.jsp中,有一个树的显示,再次进入authServlet中执行menuAction   先后