什么是粗粒度和细粒度权限控制
粗粒度权限管理: 对资源类型的权限管理. 比如:菜单 URL链接 用户添加页面 用户信息 类方法 页面中的按钮等.
细粒度权限管理: 对资源实例的权限管理. 资源实例就是资源类型的具体化 . 比如:用户ID为001的修改链接 1110班的用户信息 行政部的员工. 这些都是细化成了数据.
我们也可以理解为,细粒度权限管理就是数据级别的权限管理.
我们在举一个例子:
粗颗粒度权限管理:
比如现在有两个权限一个是超级管理员和部门管理员
超级管理员可以访问系统的所有资源,例如我们上面举得 用户添加页面和用户信息页面.
而部门管理员只能访问系统的用户信息页面.
细颗粒度权限管理:
部门经理只可以访问部门的员工信息,用户只可以看到自己的菜单,大区经理只能查看本辖区的销售订单.
如何实现粗颗粒都和细颗粒度权限.
实现粗粒度权限管理的方式
我们可以将权限管理的代码抽取出来在系统级别统一处理.比如:通过SpringMVC的拦截器实现授权.
实现细粒度权限管理的方式
针对细颗粒度的权限管理就是系统业务逻辑的一部分.比如:部门经理只能查询本部门员工信息,在service 接口提供一个部门id 的参数, controller 中根据当前用户的信息得到该用户属于哪个部门,嗲用service时将部门id传入service,实现该用户只查询部门的员工.
总结出来就是一句话:
粗颗粒针对资源,细颗粒针对数据.