权限设计(二)

转载 2013年12月02日 17:47:19

权限设计(二)

  第一部分请参看:http://tubo.cnblogs.com/archive/2005/09/02/228735.html

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

其实比新闻更好的例子是论坛板块的版主。

下面是版本二的解决方案:

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

功能表:

FunctionID

ResourceType

FunctionName

F1

NTA

起草新闻:分类A

F2

NTA

编辑新闻:分类A

F3

NTA

审核新闻:分类A

F4

NTA

删除新闻:分类A

F1

NTB

起草新闻:分类B

F2

NTB

编辑新闻:分类B

F3

NTB

审核新闻:分类B

F4

NTB

删除新闻:分类B

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

获取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语句就不是现在这么简单了)。在我现在的应用里面没有实现角色的继承(虽然角色的编码体现出了角色的父子关系)。

认证鉴权与API权限控制在微服务架构中的设计与实现(二)

引言: 本文系《认证鉴权与API权限控制在微服务架构中的设计与实现》系列的第二篇,本文重点讲解用户身份的认证与token发放的具体实现。 1. 系统概览 在上一篇《认证...

数据库(二)--数据约束 数据库设计 多表查询 MySQL存储过程 触发器 数据库权限问题

数据约束1.给表添加数据约束,从而约束用户操作表的行为。2.默认值约束(default):当一个字段有默认值约束时,如果给表中插入数据时没有给该字段插入,则给该字段分配一个默认值。CREATE TAB...

菜鸟不菜学习mvc(二)(权限设计插曲)

上次运行完以后随便点了点就没看,时隔一个周,继续学习这传说优点>缺点的mvc 本来想按老步子走,链接数据库>增加>查询>更改>删除,但这些东西之前还有个数据库要建立,建咱就好好建,没有更贱只有最贱,...
  • zlj002
  • zlj002
  • 2011年11月07日 01:11
  • 1366

用户权限设计(二)

上一篇文章:用户权限设计(一) 下面介绍一下权限的更新和验证 @RequestMapping("authDemoSubmit") public String authDemoSubmit(@M...
  • kouwoo
  • kouwoo
  • 2015年02月02日 10:50
  • 1276

权限管理设计二

转自:http://www.noahweb.net/mail/2/Project.htm#biao 实现业务系统中的用户权限管理--设计篇   B/S系统中的权限比C/S中的更显的重要,C/S...

我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航

一、前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始。 二、实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要...

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

第一部分请参看: 针对这样的需求,版本一就无能为力了(当然你也可以增加几个功能:比如分类A的新闻起草和分类B的新闻起草,再把这个功能添加到相应的角色里面去,但是这个应该不是我们要得解决方案吧,不...
  • snomyc
  • snomyc
  • 2014年08月19日 10:07
  • 7064

通用权限管理设计篇(二)

通用权限管理设计篇(二)   订阅 国庆前整的通用权限设计的数据库初步设计部分,现在贴上来。 理清了对象关系之后,让我们接着来进行数据库的设计。在数据...
  • zljjava
  • zljjava
  • 2012年05月09日 15:10
  • 1513

项目权限设计

  • 2015年10月26日 16:39
  • 58KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:权限设计(二)
举报原因:
原因补充:

(最多只允许输入30个字)