OA系统权限模型设计

  1. 定义:权限决定了某用户是否允许对某资源进行某种操作。用户,包括具体用户及用户的集合。用户的集合包括用户组,用户角色等。资源:包括数据(字段、记录、表、文件等)、界面元素(菜单、窗口、按钮、域等)、后台程序等。操作包括:
    1. 数据的:创建、列举、查看、修改、删除等
    2. 界面元素的:是否可见,是否可用等
    3. 程序:是否可执行等。
  1. 简化思路
    1. 按照事件驱动机制,程序一般与某个界面元素关联。因此可以不用直接控制程序的权限。
    2. 资源主要对应数据,操作主要对应菜单或按钮
    3. 对于数据的权限控制,细化到记录级别就足够
    4. 用户组主要与数据挂钩,角色主要与操作挂钩
    5. 系统可以建立一些自然的用户分组(例如:部门所有用户,单位所有用户,担任同一职务的用户)
    6. 用户部门调动后,应支持资源权限的移交和原用户帐号的锁定
  1. 操作权限类型(每个用户 15 个状态位)
    1. 拥有(创建权,授予权,接受权):接受之后,这些记录也视为接受者的个人记录
    2. 列举(个人的,组内的,其他):个人的列举权默认打开,其他默认关闭,也可以调整策略
    3. 查看(个人的,组内的,其他):个人的查看权默认打开,其他默认关闭,也可以调整策略
    4. 修改(个人的,组内的,其他):个人的修改权默认打开,其他默认关闭,也可以调整策略
    5. 删除(个人的,组内的,其他):个人的删除权默认打开,其他默认关闭,也可以调整策略
  1. 数据共享类型(每条数据 12 个状态位):个人权限均默认打开,其他默认关闭,也可以调整策略
    1. 个人可列
    2. 个人可查(隐含个人可列)
    3. 个人可删(隐含个人可列)
    4. 个人可改(隐含个人可查)
    5. 组内可列
    6. 组内可查(隐含组内可列)
    7. 组内可删(隐含组内可列)
    8. 组内可改(隐含组内可查)
    9. 全局可列
    10. 全局可查(隐含全局可列)
    11. 全局可删(隐含全局可列)
    12. 全局可改(隐含全局可查)
  1. 初步考虑需要的表
    1. 用户表
    2. 用户组表
    3. 用户 - 用户组关联表
    4. 角色表
    5. 用户 - 角色分配表
    6. 权限代码表(菜单、按钮、数据域等):菜单对应模块,按钮对应具体操作
    7. 角色 - 权限分配表:角色能操作哪些界面菜单或按钮,包括可见否,可操作否
    8. 部门表
    9. 员工表
    10. 员工 - 部门关联表
    11. 用户对应员工表
    12. 职务表(或岗位表)
    13. 职务 - 角色关联表
    14. 员工 - 职务关联表

OA权限管理分为: 人员管理 角色管理 模块管理 其实有这样一些概念: 主体:用户和角色可以称为主体。 资源:就是可以进行crud的对象。 权限:就是对资源的crud操作。 授权:就是对这种权限的分配。 认证:就是查询用户是否有权限。 用户和角色的关系是多对多,这共同组成了主体。 模块是资源。 主体和资源的纽带是ACL(访问控制列),主体和ACL之间是多对多关系,资源和ACL之间也是多对多关系。ACL里面就记录了用户的权限。 在数据库上它就是一个的作用。 授权是这样的: 授权分为两种: 角色授权 对角色统一授权,继承这种角色的用户就自动拥有该角色所拥有的权限,并且权限分有优先级,这样两种权限如果之间发生冲突则取高优级。 用户授权 对用户进行单独授权,这种情况必须在不继承角色的情况下才能生效,并且此时只使用单独授权的权限。 每一次授权都是针对特定模块,而不是所有。 搜索用户所有授权过程是这样的: 1、查询用户所有角色的权限,按优先给从低到高,有重复的可以以高优先级覆盖。(存入Map,key是资源标识) 2、查询用户直接授予的权限。查询不继承的权限。 3、合并权限。 4、再从选择具体的权限(crud)。 认证过程是这样的: 根据用户标识和资源标识查找ACL实例 有实例: 查看是否有确定授权 确定:返回授权 不确定(继承):查询用户拥有角色列,根据角色标识和资源标识查找ACL实例(循环) 没有实例: 查询用户拥有角色列,根据角色标识和资源标识查找ACL实例(循环)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值