权限管理

来源:互联网 发布:windows ant下载 编辑:程序博客网 时间:2024/05/16 14:38

1.基于角色的访问控制:
RBAC:(Role based access control)基于角色的访问控制.
比如:系统角色包括,部门经理,总经理.(针对用户来划分)
系统代码中实现:
使用if条件判断
缺点:人员变更需要,改代码

2.基于资源的访问控制:
RBAC:(Resource based access control)基于资源的访问控制.
资源在系统中是不变的,比如资源有类中的方法,
对资源的访问需要具有permission权限,
此时使用if判断用户报表查看
上边的方法可以解决用户角色变更修改权限控制代码.
如果需要变更权限只需要在分配权限模块去操作.给部门经理增加或删除权限.
3.权限管理解决方案
什么是粗颗粒度:对资源类型的权限管理:,菜单,url,用户添加页面,用户信息,类方法,页面按钮.
*比如超级管理员可以访问全部页面
部门管理员可以访问用户信息页面*

什么是细颗粒度:对资源实例的权限管理,资源类型的具体化,用户id为001的修改连接,用户信息,人事部的员工,细粒度的权限的管理就是数据级别的权限管理
比如部门经理只可以访问本部门的员工信息,用户只可以看到自己的菜单,大区经理只能查看到本辖区的销售订单.

粗颗粒权限管理比较容易将权限管理的代码抽取出来在系统架构级别统一处理,比如通过springmvc的拦截器实现授权.

细颗粒权限管理,在数据级别是没有共性可言,针对细粒度的权限管理就是系统中业务逻辑的一部分,如果在业务层去处理相对比较简单,如果将细粒度权限管理统一在系统中架构级别去抽取,比较困难,即使抽取的功能可能也存在扩展不强.

建议细粒度权限管理在业务层去控制.
比如: 部门经理只查询本部门员工信息,在Service接口提供一个部门id的参数,controller中根据当前用户的信息得到该用户属于哪个部门,调用service时将部门id传入service,实现该用户只查询 本部门的员工.