`

程序设计中的权限设计一

Web 
阅读更多

在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案。

  在权限系统中,功能(权限)是最小的单位,比如起草新闻、编辑新闻、审核新闻、删除新闻等,而角色是一类功能的集合,比如新闻编辑这个角色,他可能有起草新闻、编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻、删除新闻等功能,给张三赋予新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻、编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草新闻、编辑新闻、审核新闻、删除新闻了。

  我们来看看版本一的解决方案:


 

  我们来模拟一下上面的数据:

  用户信息表:

UserID

UserName

U1

张三

U2

李四

  角色表:

RoleID

RoleName

R1

新闻编辑

R2

责任编辑

  角色用户表:

RoleID

UserID

R1

U1

R2

U2

  功能表:

FunctionID

FunctionName

F1

起草新闻

F2

编辑新闻

F3

审核新闻

F4

删除新闻

  角色功能表:

RoleID

FunctionID

R1

F1

R1

F2

R2

F1

R2

F2

R2

F3

R2

F4

  我们来看看如何判断一个用户具有某个功能权限:

  首先在用户张三登录的时候,获取张三的全部功能列表:

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

  这样就可以得到张三的全部功能列表Functions,在起草新闻的页面我们就可以做如下判断:

Functions.Contain(‘F1’);//当然你可以把这个’F1’定义成一个常量:NewsFunction.Draft

  如果为true就说明张三有起草新闻的权限。

  当然对于web应用,您可以把Functions session保存起来,以避免每打开一个页面都去数据库中获取。

  似乎看起来是一个不错的解决方案。

  还是新闻系统,最初新闻系统没有分类,但是随着新闻的增加,没有分类的新闻看起来总是乱的,于是张三和李四给新闻添加了分类A、分类B,还是由张三负责起草,李四负责审核,以后又添加了更多的分类,并且也增加了人手,这个时候就有新的要求出来了:希望张三只负责分类A的起草,分类B的起草交给其他人做,李四呢也只负责分类A的审核(就相当于是一个栏目的责任编辑)。

分享到:
评论

相关推荐

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

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

    应用程序权限设计

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

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

    C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能...

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

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

    delphi 7 程序设计毕业论文

    1.1 面向对象程序设计概述 1 1.1.1 从结构化到面向对象 1 1.1.2 面向对象的程序设计 2 1.2 数据库概述 3 1.3课题来源及系统简介 6 1.3.1 课题来源 6 1.3.2 系统介绍 7 第2章 系统的总体方案设计 8 2.1 软件开发工具...

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

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  2.2 一点...

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

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  ...

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

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

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

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  ...

    Excel_VBA程序设计.pdf

    非常详尽的Excel_VBA程序设计,好不容易才整理搜索到的。 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第...

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

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

    Java权限控制设计

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

    项目权限设计

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

    Linux程序设计 第4版.haozip01

    Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...

    学籍管理系统程序设计

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

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

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

    Linux程序设计 第4版.haozip02

    Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...

    安全程序设计期末考试样题

    安全程序设计期末考试样题.选择题.对类成员访问权限的控制.

    visual C++程序设计范例宝典

    第1章 窗体与界面设计 1 1.1 菜单应用实例 2 实例001 在系统菜单中添加菜单项 2 实例002 带图标的程序菜单 3 实例003 根据表中数据动态生成菜单 6 实例004 浮动的菜单 8 1.2 弹出菜单应用实例 10 实例...

    《面向对象程序设计》课程设计任务书

    设计一个基于Web的新闻发布系统,该系统的用户分别是:用户和系统管理员,不同的用户拥有不同的权限,各自完成各自的管理功能,不同的用户看到不同的系统功能,用户创建后台数据库,然后利用DAO设计模式编写程序...

Global site tag (gtag.js) - Google Analytics