zoukankan      html  css  js  c++  java
  • 基于角色的权限设计方案

    正文:
    基本概念
    资源概念
    资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限
    权限概念
    权限是对资源的一种保护访问.用户要访问A资源前提是用户必须有A资源的访问权限.
    角色概念
    实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色。
    A是个经理,他管理着B公司,他拥有b,c,d的权限。实际是不是A有这个权限,而是因为Abo是经理。因为经理拥有b,c,d权限
    所以很显然在权限划分上,我们会把权限赋予给某一个角色,而不是赋予给个人。这样带来的好处是
    如果公司换了经理,那么只要再聘用一个人来做经理就可以了,而不会出现因为权限在个人手里导致权限被带走的情况
    分组概念
    只有角色是不够的,B公司发现A有财务问题成立了一个财务调查小组,然后我们赋予了这个小组财务调查员的角色(注意是赋予小组这个角色).这样这个小组的所有人员
    都有财务调查的资格。而不需要给小组的每个人都赋予这个角色(实际上已经拥有了),分组概念也适合部门,因为任何一个部门在公司里或者社会上都在扮演着一个泛的角色。
    用户对资源的访问控制
    判断用户有没有访问资源的权限就看这个用户有没有访问这个资源的权限,也就是说分组,分部门,分角色最终是以权限来实现对资源的访问控制
     
    实体功能对象
    用户(User)
    用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、密码等,权限是被分离出去了的。用户(User)要拥有对某种资源的权限,必须通过角色(Role)去关联
    角色(Role)
    角色是使用权限的基本单位,拥有一定数量的权限,通过角色赋予用户权限
    权限(Right)
    权限指用户根据角色获得对程序某些功能的操作,例如对文件的读、写、修改和删除功能
    用户与角色的关系(User&Role)
    一个用户(User)可以隶属于多个角色(Role),一个角色组也可拥有多个用户,用户角色就是用来描述他们之间隶属关系的对象。用户(User)通过角色(Role)关联所拥有对某种资源的权限
    权限与角色的关系(Right&Role)
    一个角色(Role)可以拥有多个权限(Permission),同样一个权限可分配给多个角色
    建立用户权限(Assign Right)
    用户权限系统的核心由以下三部分构成:创造权限、分配权限和使用权限。
    第一步由Creator创造权限(Permission),Creator在设计和实现系统时会划分。利用存储过程CreatePermissionInfo(@PermissionName,@PermissionNote)创建权限信息,指定系统模块具有哪些权限。
    第二步由系统管理员(Administrator)创建用户和角色,并且指定用户角色(User-Role)和角色权限(Role-Permission)的关联关系。
      1).具有创建用户、修改用户和删除用户的功能: Administrator
             存储过程CreateUserInfo(@UserName,@UserPwd)创建用户信息;
             存储过程ModifyUserInfo(@UserName,@UserPwd)修改用户信息;
             存储过程DeleteUserInfo(@UserID)删除用户信息;
      2).具有创建角色和删除角色的功能: Administrator
             存储过程CreateRoleInfo(@RoleName,@RoleNote)创建角色信息;
             存储过程DeleteRoleInfo(@RoleID)删除角色信息;
      3).Administrator具有建立用户和角色、角色和权限的关联关系功能:
             存储过程GrantUserRole(@UserID,@RoleID,@UserRoleNote)建立用户和角色的关联关系;
             存储过程DeleteUserRole(@UserRoleID)删除用户和角色的关联关系;
             存储过程GrantRolePermission(@RoleID,@PermissionID,@RolePermissionNote)建立角色和权限的关联关系;
             存储过程DeleteRolePermission(@RolePermissionID)删除角色和权限的关联关系;
    第三步用户(User)使用Administrator分配给的权限去使用各个系统模块。利用存储过程GetUserRole(@UserID, @UserRoleID output),GetRolePermission(@RoleID,@Role-
    -PermissinID output)获得用户对模块的使用权限。
     
    发布日期: 2007-3-24 8:23
  • 相关阅读:
    sql2005事务的使用
    [原]using的另一种用法
    [原]Cache的简单用法
    [原] Js动态删除行(支持FireFox)
    [原]为什么文本框高度不一样?
    [原]如何把object解析为int,double,float?
    压缩SQL SERVER日志文件
    [原]替换的更新(Update)查询
    [原]让链接点击过后无虚线
    [原]取得Access表中表的名字
  • 原文地址:https://www.cnblogs.com/yinpengxiang/p/1416145.html
Copyright © 2011-2022 走看看