`

程序设计中的权限设计二

SQL 
阅读更多

针对这样的需求,版本一就无能为力了(当然你也可以增加几个功能:比如分类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语句就不是现在这么简单了)。在我现在的应用里面没有实现角色的继承(虽然角色的编码体现出了角色的父子关系)。

分享到:
评论

相关推荐

    应用程序权限设计-权限的控制程度不同的设计方案

    2、基于操作的权限设计 3、基于角色和操作的权限设计 4、2,3组合的权限设计,其结构如下: 5、 对于同一种实体(资源)用户可以对一部分记录有权限,而对于另外一些记录没有权限的权限设计: 6、涉及资源,权限和...

    应用程序权限设计

    应用程序权限设计,典型设计,可定有用。

    WEB程序设计中的权限设计与实现

    B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过...下面就让我们一起了解一下如何设计可以满足大部分B/S系统中对用户功能权限控制的权限系统。

    应用程序系统中权限的设计——数据库设计

    应用程序系统中,权限的设计,分析,数据库设计

    delphi 7 程序设计毕业论文

    1.1.2 面向对象的程序设计 2 1.2 数据库概述 3 1.3课题来源及系统简介 6 1.3.1 课题来源 6 1.3.2 系统介绍 7 第2章 系统的总体方案设计 8 2.1 软件开发工具的选择 8 2.2 Delphi编程语言 9 2.3系统总体方案 9 2.3.1 ...

    Linux程序设计中文第4版.part2

    第2章 shell程序设计  2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  ...

    Linux程序设计中文第4版.part1

    第2章 shell程序设计  2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  2.5.1 ...

    计算机二级mysql数据库程序设计练习题(二).docx

    计算机二级mysql数据库程序设计练习题(二)全文共12页,当前为第2页。计算机二级mysql数据库程序设计练习题(二)全文共12页,当前为第2页。 A.CALL p(100,@x) ; B.CALL p(100," 张红 ") ; C.CALL p(@a,@b); D.CALL...

    用户权限设计 (2)(1)(1).docx

    用户权限设计主要包括程序设计、数据库设计、接口设计。程序设计包括用户管理、角色管理、权限管理、组管理。用户管理包括新增、编辑、删除、查看

    Linux程序设计中文第4版.part3

    第2章 shell程序设计  2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  ...

    Excel_VBA程序设计.pdf

    二、Visual BASIC程序设计网络教学 8 第一课 VBA是什么 8 1.1 VBA是什么 8 1.2 EXCEL环境中基于应用程序自动化的优点 9 1.3 录制简单的宏 9 1.4 执行宏 10 1.5 查看录制的代码 10 1.6 编辑录制的代码 11 1.7 录制宏...

    Java权限控制设计

    主要实现java程序设计中有关权限的设计

    项目权限设计

    web应用程序等,权限设计,数据库表实现,设计文档详细描述权限设计

    Linux程序设计 第4版.haozip01

    第2章 shell程序设计 15 2.1 为什么使用shell编程 15 2.2 一点哲学 16 2.3 什么是shell 16 2.4 管道和重定向 18 2.4.1 重定向输出 18 2.4.2 重定向输入 19 .2.4.3 管道 19 2.5 作为程序设计语言的shell 20 ...

    Oracle PL SQL 程序设计第五版(中文上下册+源码) 1

    Oracle PL SQL 程序设计第五版(中文) 包含内容: 1。上册,1 - 16章 2。下册,17 - 26章 3。源码 4。另外还有27和28两章的英文版。 注意:因为上传权限问题,分成了三部分,这是第一部分。请全部下载后再解压。

    JAVA语言与程序设计访问权限及封装性PPT教案学习.pptx

    JAVA语言与程序设计访问权限及封装性PPT教案学习.pptx

    学籍管理系统程序设计

    学籍管理系统程序设计 本系统是一个简单的学籍管理系统,系统的使用者是教务处管理者. 教务处管理者可以进行查询,添加,删除,修改,保存,和对所有学生的浏览.. 本系统有一个统一的密码,所以在进入系统时要输入密码,...

    SQL Server 2008高级程序设计 2/6

    SQL Server 2008高级程序设计 2/6 SQL Server 2008 2010 高级程序设计 作者:(美)维埃拉 著,杨华,腾灵灵 译 出版社:清华大学 出版日期:2010-4-1 ISBN:9787302222729 字数:1250000 页码:730 ----------------...

    Oracle PL SQL 程序设计第五版(中文上下册+源码) 2

    Oracle PL SQL 程序设计第五版(中文) 包含内容: 1。上册,1 - 16章 2。下册,17 - 26章 3。源码 4。另外还有27和28两章的英文版。 注意:因为上传权限问题,分成了三部分,这是第二部分。请全部下载后再解压。

    NET组件程序设计 第2版中文版.part3.rar )

    本书主要介绍了设计和开发基于组件的.NET应用程序所需要的技术及相关主题,说明了.NET组件程序设计的起源和它对以往技术缺陷所作的改进。本书还利用大量的代码示例、使用技巧、开发警示、设计准则和富有创意的实用...

Global site tag (gtag.js) - Google Analytics