`
tieshow
  • 浏览: 29251 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论
阅读更多
    有用质数组成权限集合的,有用2的n次幂组成权限值集合的,我都是用直接将用户和权限代码(自定义格式)存储的,判断时,where   in   (   权限代码   ),大家讨论讨论,各利弊? 
  
  ================================================== 
  [编程思路]权限设计 
  大概有这几种模式: 
  用户+组+角色+权限 
  用户+组+权限 
  用户+角色+权限 
  用户+权限 
  
  最近看了别人的设计方法,大多以“整数”来表示权限值,如添加、浏览、删除和修改,分别用1、2、4、8这几个整数来代替,不过,各人的 
  
  做法有所不同,举例如下: 
  
  1.用2的n次幂组成权限值的集合,如1、2、4、8、16...,某用户的权限值为其子集中的整数之和,如   7=1+2+4,5=1+4。如果要从数据库检索 
  
  包含某几种权限的用户,则先把这几种权限值相加,假设和为k,然后select   *   from   table   where   1   and   用户权限值   =   'k';如果要判断某用 
  
  户有哪些权限,则取出其权限值k,分别用k&1,K&2,K&4,k&16...,如果为真,则表示有值等于“&”右边整数的权限,例如,如果k&4为真,则此 
  
  用户有权限表中值等于4的权限; 
  
  2.用质数2、3、5、7、11...组成权限集合,某用户的权限为其子集中各整数的乘积,如   210   =   2*3*5*7,我觉得这种方法很有趣,难点在于如 
  
  何分解质因数;但我有些不认同原作者的提法,他认为权限之间可能存在包含关系,如某用户有删除权限,则其一定有浏览权限,要不然就没 
  
  法删除,事实确实是这样,不过我认为这样太复杂了,容易出错,我觉得权限最好是“原子”的,互不干扰,也就是说某用户有删除权限而没 
  
  浏览权限则其无法进行删除操作,因为他看不到东西,解决这个矛盾的关键是在给用户赋权时,把浏览权限也赋给他; 
  
  3.不用整数,而是用“向量表”方法(也许我说的不一定对),把所有可能的权限按一定的顺序排列,如添加、浏览、修改、删除...,用户的 
  
  权限值为固定100位长度的字符串,如100010100001....01,从左起每一位对应一种操作权限,如果有这种权限,则此位的值为1,反之,则为0 
  
  ,作者之所以把用户权限值固定为100位,我想是考虑到升级问题,但我认为这还不够科学,我认为用户的权限值长度应小于权限个数,举例如 
  
  下: 
  权限排列表:添加、浏览、修改、删除,用户A有添加和浏览的的权限,则其权限值为11,用户B有浏览和修改的权限则其权限值为011,用户C 
  
  有浏览和删除的权限则其权限值为0101,这样设计的好处为:当权限表中增加别的权限时,不会影响用户表或角色表; 
  
  4.我曾经的做法,在后台管理中把权限分为两大类:栏目权限和操作权限,每个栏目对应一个目录,操作权限细分为浏览、添加、修改和删除 
  
  ,用户进入系统后首先判断有没有栏目权限,然后判断有没有操作权限,判断栏目权限相对简单一些,首先获取访问页面的路径path,然后分 
  
  解出目录,对应用户拥有的目录权限,如果此目录包含在用户有权管理的目录数组中(从数据库取出),则其有进入此目录的权限,否则,没 
  
  有,然而,在判断操作权限好象有些麻烦,但突然想到添加、浏览、修改和删除与我的文件命名规则是基本是对应的,但有点不同的是,我把 
  
  添加和删除的功能合并在一个文件中了,例如文件名为proAddEdit.php,幸好意识到修改文件时多了个传递参数id,于是,我用正则解决了这 
  
  个问题,今天看来,这种方法似乎过时了,因为不适应面向对象的思想和用框架体系来开发系统!
分享到:
评论
2 楼 夜神月 2011-12-09  
用幂的方式,效率比较高,但有个缺点,如果控制的权限比较细的情况下,这个权值会很大的。我比较喜欢用字符串就是1001这种方式做拼接,效率会低些,但不会有像数值那样的大小限制
1 楼 tieshow 2009-02-12  
转化为二进制,从右向左依次取基,若基为的位则拥有相应权利,
举例:
(11)10=(1011)2,即拥有第一、二、四项权力,和“用户权力列表”相符;
(12)10=(1100)2,即拥有第三、四项权力,和“用户权力列表”相符;
(15)10=(1111)2,即拥有第一、二、三、四项权力,和“用户权力列表”相符;
当权利等级极其复杂时,该算法可以很快知道用户权力:

相关推荐

    权限设计,非常经典的通用权限设计,网上难找啊

    权限设计,非常经典的通用权限设计,网上难找啊权限设计,非常经典的通用权限设计,网上难找啊权限设计,非常经典的通用权限设计,网上难找啊权限设计,非常经典的通用权限设计,网上难找啊权限设计,非常经典的通用...

    权限设计(包括表结构)

    权限设计(包括表结构) 权限设计是任何系统不可或缺的一部分,对于系统的正常运作和管理起着至关重要的作用。权限设计的主要目标是确保系统中的每个用户都拥有适当的权限,从而确保系统的安全和稳定。 permissions...

    应用程序权限设计

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

    权限设计原理(原创)

    《权限设计原理》 一、权限设计概要 权限设计是构建安全、高效系统的关键环节,它涉及到用户对资源的访问控制和操作限制。前言部分强调了权限设计的重要性,指出在信息化社会,保护数据安全和隐私成为不可忽视的...

    数据库权限设计与实现

    数据库权限设计与实现 数据库权限设计与实现是指在业务系统中对用户权限的管理和控制,通过设计和实现一个权限系统,来确保只有经过授权的用户才能访问和操作系统中的功能和资源。以下是数据库权限设计与实现的知识...

    用户权限设计方案

    用户权限设计方案 用户权限设计方案是指通过建立用户、角色和权限等数据库表,并且建立之间的关系来实现用户认证管理的设计方案。该方案的主要目的是为了提供一种具有较强可扩展性的用户认证管理系统,能够满足不同...

    laravel权限设计笔记

    Laravel 权限设计笔记 Laravel 权限设计是指在 Laravel 框架中实施的权限管理机制,旨在控制用户对系统资源的访问权限。权限设计的核心是围绕用户、角色、权限三个实体展开的。 用户(User) --------- 在 ...

    完善的权限设计文档

    权限设计是信息系统中不可或缺的一部分,尤其在大型系统中,它涉及到用户访问控制、安全性和功能分配。基于角色的权限设计(Role-Based Access Control, RBAC)是一种常见的解决方案,它通过角色来集中管理权限,...

    c#开发之权限设计和应用

    在C#开发中,权限设计是一项至关重要的任务,它涉及到软件系统的安全性、用户访问控制以及数据保护等多个方面。本文将深入探讨C#中的权限设计及其应用,并结合提供的资源——一个PPT和实例教程,帮助读者理解和掌握...

    .net mvc 权限设计

    在.NET MVC框架中,权限设计是一项关键任务,它涉及到如何控制不同用户访问应用程序中的特定资源。在SQL Server 2012数据库支持下,结合Visual Studio 2013进行开发,我们可以创建一个高效且安全的权限管理系统。...

    吉日嘎拉 走火入魔通用权限设计源码下载

    【标题】"吉日嘎拉 走火入魔通用权限设计源码下载"所涉及的知识点主要集中在通用权限管理系统的实现上,这通常包括角色、用户、资源、操作等核心概念,以及权限的分配、检查和控制。下面将详细阐述这些关键知识点。 ...

    java用户权限设计

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

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

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

    Java基本的权限设计

    Java权限设计是构建安全应用程序的关键组成部分,它涉及到对系统资源的访问控制,确保只有授权的用户和角色才能执行特定的操作。以下是对标题和描述中提到的知识点的详细说明: 1. **实体设计**: 在Java权限设计...

    系统框架权限设计杂谈论文

    在IT行业中,系统框架权限设计是一项至关重要的任务,它涉及到软件的安全性、稳定性和用户体验。这篇名为“系统框架权限设计杂谈论文”的文档很可能是对这一领域的深入探讨。权限设计是任何复杂系统的核心组成部分,...

    RBAC的权限设计模型

    RBAC权限设计模型 RBAC(Role-Based Access Control,基于角色的访问控制)是一种基于角色的权限设计模型,旨在解决权限管理的复杂性和灵活性问题。RBAC模型认为权限授权实际上是Who、What、How三个问题的结合,也...

    web系统权限设计书(内有详细数据库设计分析)

    在IT行业中,权限设计是构建安全、高效web系统的关键组成部分。本资料集“web系统权限设计书”深入探讨了这一主题,提供了详细的数据库设计分析,旨在帮助开发者和系统架构师理解并实施有效的权限管理和角色控制策略...

    权限设计VSD

    在IT行业中,权限设计是构建安全、高效系统的关键组成部分,特别是在多用户环境下,如企业级应用、社交媒体平台或在线协作工具。"权限设计VSD"很可能是指使用Visio(一个微软出品的图表绘制软件,VSD是其文件格式)...

    登入角色用户权限设计代码.

    ### 登入角色用户权限设计代码知识点解析 #### 一、概览 本文将对“登入角色用户权限设计代码”进行详细解析,主要包括三个方面:登录功能实现、用户验证流程及权限控制设计思路。此代码示例提供了基于Web应用程序...

    JAVA普遍使用的权限设计

    在Java中,权限设计是构建安全、高效的企业级应用不可或缺的部分。本文主要探讨了OA系统中普遍采用的权限管理设计方案,旨在提供一种灵活、可扩展的权限控制机制,以适应不同规模企业的实际需求。 首先,权限设计的...

Global site tag (gtag.js) - Google Analytics