我知道权限大部分时候都采用的是:权限,角色,用户的方式进行的。但是权限具体是怎么分配到资源或功能上的。
我现在用shiro,就按照他所提供的方法,如果页面有地方需要用权限控制,就用shiro标签处理。action权限使用注解处理。每个功能(比如页面一个按钮,或者一个action)都必须有特定的某个权限才可以访问。
比如:用户模块的action有:
1. 添加
2. 删除
3. 查询
4. 禁用(修改)
5. 改密码(修改)
6. 修改个人信息(修改)
7. ......
这样一来至少就有了4个权限:user:add,user:del,user:list,user:edit
有时候特殊的修改功能权限不是修改,必须要和修改分开或者某些操作涉及到的是多个模块,有需要一个单独的权限去控制。
最后造成的后果就是,几乎每个action的权限都不一样,页面到处都可能存在shiro标签,其他程序员开发的时候,还要看着权限表一个一个去找去对照才知道有啥权限,要啥权限。
我看有些人他们权限在设计的时候就是定死的,很简单,菜单有单独的权限,然后每个菜单点进去都是list列表,然后只有增删改查四个按钮四个权限,其他都没了。这样一来权限控制只需要控制某个用户针对某个菜单的内容有哪个权限即可。
我总感觉这样哪里有问题,但又说不上来,还希望高手能够指导指导,谢谢了。
将权限简单分为读写本身就是愚蠢的行为,业务的处理就包含了权限的逻辑关系。用户操作业务时,业务数据的权限本身就在变化,比如需要提交审核、上下级所属,赋予写的权限是对整张表的权限,而最小需要的是对每一条数据的权限
根据实际情况需求去做。只要能解决问题的办法都是可以的。