`

程序设计中的权限设计一

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的审核(就相当于是一个栏目的责任编辑)。

分享到:
评论

相关推荐

    应用程序权限设计

    应用程序权限设计是软件开发中一个至关重要的环节,它涉及到如何有效地控制用户对系统资源的访问。权限设计的主要目的是确保只有经过授权的用户才能执行特定的操作,以保护系统的安全性和完整性。以下将详细介绍几种...

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

    ### 应用程序权限设计-权限的控制程度不同的设计方案 #### 一、引言 在软件开发过程中,权限管理是一项至关重要的任务。合理的权限设计不仅可以保障系统的安全性,还能提升用户体验,确保不同用户群体能够访问他们...

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

    【权限设计与实现】在B/S(Browser/Server)系统中,权限设计是至关重要的,因为与C/S(Client/Server)系统相比,B/S架构的开放性使得任何拥有浏览器的用户都可能尝试访问系统功能。为了防止未经授权的访问,B/S...

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

    2. **基于操作的权限设计**:这种设计每个操作都对应数据库中的一条记录,用户对特定操作的权限也存储在数据库中。然而,随着操作数量的增加,`UserAction`表可能变得非常庞大,可能导致性能问题。 3. **基于角色和...

    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 软件开发工具...

    Unix程序设计详细PPT和复习资料

    4. **文件操作**:Unix系统中一切皆文件,文件的创建、打开、读写、关闭等操作是程序设计的基础。学习包括文件描述符、文件权限、符号链接、硬链接等概念。 5. **进程和线程**:Unix中的进程是执行中的程序,而线程...

    wince程序设计教程

    本教程将深入探讨Wince程序设计的基础与高级特性,帮助初学者快速掌握这一领域的核心技能。 一、Windows CE概述 Windows CE是一个可裁剪、实时的、32位的操作系统,其设计目标是满足小型设备的特定需求。它提供了...

    Windows程序设计教程.zip

    线程管理是Windows程序设计中的重要一环,包括创建、同步和销毁线程。此外,事件驱动编程模型也是Windows程序设计的一大特点,程序通过响应用户的输入、系统事件或者其他线程的信号来进行处理。 语法结构是程序设计...

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

    在本文中,我们将详细探讨用户权限设计的三个方面:程序设计、数据库设计和接口设计。 1. 程序设计: 程序设计主要关注用户、角色、权限和组的管理。 - **用户管理**:包括用户列表、新增(编辑)用户、用户授权...

    自考07026网络应用程序设计真题三套,需要的可以下载

    【网络应用程序设计】是计算机科学领域的一个重要分支,主要研究如何设计、开发和维护在网络上运行的应用程序。这个学科涵盖了Web开发的基本技术,如HTML、CSS、JavaScript,以及服务器端编程语言,如PHP、Java、...

    面向对象程序设计试卷1.doc

    1. 面向对象程序设计的基本概念:面向对象程序设计是一种编程范式,强调对象之间的交互和继承关系。它的基本概念包括封装、继承、多态和抽象。 2. C++语言基础:C++是一种编程语言,支持面向对象程序设计。它的基本...

    FTP服务程序设计

    FTP(File Transfer Protocol)服务程序设计是网络编程领域的一个重要课题,主要涉及如何通过C#编程语言和.NET框架创建一个能够实现文件传输的应用程序。在本文中,我们将深入探讨FTP服务程序设计的关键概念、技术...

    吉林大学windows程序设计

    进程管理是Windows程序设计中的核心内容。一个进程可以包含一个或多个线程,每个线程执行不同的任务。通过学习如何创建、管理和销毁进程,以及如何在进程间通信(IPC),我们可以实现多任务并行处理,提高程序的运行...

    计算机程序设计竞赛题目

    ### 计算机程序设计竞赛知识点解析 #### 一、前端网页设计竞赛 ##### 技术要点 **HTML + CSS + JavaScript**:参赛者需掌握这些基础网页开发技术,其中HTML用于构建网页结构,CSS负责样式设计,JavaScript则用于...

    用户权限设计方案

    用户权限设计方案 用户权限设计方案是指通过建立用户、角色和权限等数据库表,并且建立之间的...用户权限设计方案是一种灵活、可扩展的设计方案,可以满足不同类型的用户和角色之间的关系,并且能够灵活地分配权限。

    java用户权限设计

    在Java编程领域,权限设计是构建安全应用程序的关键组成部分。它涉及到如何管理用户访问资源的权限,确保只有授权的用户或系统组件能够执行特定的操作。在这个主题中,"java用户权限设计"涵盖了多个重要知识点,包括...

    Microsoft.NET框架程序设计

    在.NET框架中,程序设计通常基于面向对象原则。C#是最常用的.NET编程语言,它支持类、接口、继承、多态等面向对象特性,同时也引入了Lambda表达式、匿名方法等现代编程概念。此外,.NET框架还提供了LINQ(Language ...

    Oracle程序设计

    以上只是Oracle程序设计中的一部分关键概念,实际工作中还需要不断学习和实践,以应对各种复杂的企业级应用场景。通过深入学习和理解这些知识点,你将能够有效地设计和实现高效、稳定、安全的Oracle数据库应用程序。

    《Linux与Qt程序设计》.pdf

    《Linux与Qt程序设计》这本书籍聚焦于Linux操作系统环境下Qt框架的程序设计,是想要从事基于Linux平台的软件开发人员的一本非常有价值的参考书籍。Linux操作系统是一个类Unix系统,以其开源性、稳定性和安全性被广泛...

Global site tag (gtag.js) - Google Analytics