关于权限控制

时间:2022-09-07 15:26:25
这几天正在捣腾权限控制的事情,我的思路是三张表。
用户表:user
角色表:role
权限表:authority
角色表就相当于用户组,然后某个用户组具有某个权限。
有没有更好的思路或者说控制的更细的啊?
springMVC的好一点的小例子谁能不能给个啊?crazyboiling@live.cn

15 个解决方案

#1


你这种的权限控制我看见有公司用过,不过是个小公司。其实可以对action里面的方法进行编号,action里面的方法跟页面的按钮时对于的嘛,然后将编号的action方法作为一条记录存放在authority表中,再新建一个权限组的表,然后就是你的思路了,这样就可以控制到页面的任何按钮了,有必要的话,还可以引入角色的继承。大部分时间是没必要的吧。
springMVC的例子已经发到你的邮箱,查收。

#2


主要是action中的方法你都要进行便编号,要不方法跟权限是关联不起来的,其他很久单啊

#3


 说通俗点 就是什么用户能调什么方法,你action中无非就是写的增删改查,到时候限制用户调用就可以了

#4


role   设置 roleid的字段(基本的字段)(流水id)  rolename    userid  authorityid 
假如 user的角色有admin,up,权限表中有create,update和delete
role中的数据     
1  admin  createid
2  admin  updateid
3  admin  deleteid
4  up     updateid
5  up     deleteid

#5


权限用resource+action方式,至于resource要多细你就自己定义了。
另外如果想要赋权限更灵活,那就再把user分为usergroup。
可以参考liferay对于权限的定义,很细了。

#6


up.........

#7


该回复于2010-10-09 14:26:47被版主删除

#8


一般的比较大型的权限管理系统都是采用RBAC模式(Role-base Access Control),即基于角色的访问控制。

简单的说就是自己抽象出一个模型,包括用户、角色和权限。

1. 所谓的权限就是用户对模块的访问控制,即对某个模块用户是否有C/R/U/D等操作
2. 角色可以被授予多个权限
3. 用户可以被分配角色,继而拥有角色所拥有的权限。

整个权限管理涉及到认证和授权。授权说白了就是向数据库中添加数据;
认证涉及到两部分:登陆认证和及时认证。
    
  登陆认证:就是在登陆时要验证登陆者拥有的所有角色所拥有的所有的权限(注意其中涉及到权限冲突的解决问题),登陆成功后根据验证的信息给当前用户开放具有读取权限的模块,进而实现权限认证。

  及时认证:这是登陆成功之后要进行的操作,即登陆成功后用户可能点击某个模块,此时将会显示该模块的一些信息,这是就要及时认证,验证用户对当前点击的某块拥有的权限,主要是验证增、删、改权限,如果有则给用户开放对应的操作功能,如果没有权限当然就没有这些功能了。

这只是简单的列举了一下,希望对楼主有所帮助。

#9


你说小公司用这样?用户表  工作组表  权限表,那大公司都是怎么设计的?跪求?

#10


一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表

#11


该回复于2010-10-11 10:21:41被版主删除

#12


火龙果强大

#13


引用 10 楼 bao110908 的回复:
一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表


  
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分  
这里发言,表示您接受了CSDN社区的用户行为准则。 
请对您的言行负责,并遵守*有关法律法规,尊重网上道德。 
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。 
 

#14


引用 10 楼 bao110908 的回复:
一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表


还有没有更更高级的了?

#15


回复13楼:
最近做到权限控制表太多,思路太混了!对于这高级权限的控制,思路如何的理清;脉路在哪,指点一二...

#1


你这种的权限控制我看见有公司用过,不过是个小公司。其实可以对action里面的方法进行编号,action里面的方法跟页面的按钮时对于的嘛,然后将编号的action方法作为一条记录存放在authority表中,再新建一个权限组的表,然后就是你的思路了,这样就可以控制到页面的任何按钮了,有必要的话,还可以引入角色的继承。大部分时间是没必要的吧。
springMVC的例子已经发到你的邮箱,查收。

#2


主要是action中的方法你都要进行便编号,要不方法跟权限是关联不起来的,其他很久单啊

#3


 说通俗点 就是什么用户能调什么方法,你action中无非就是写的增删改查,到时候限制用户调用就可以了

#4


role   设置 roleid的字段(基本的字段)(流水id)  rolename    userid  authorityid 
假如 user的角色有admin,up,权限表中有create,update和delete
role中的数据     
1  admin  createid
2  admin  updateid
3  admin  deleteid
4  up     updateid
5  up     deleteid

#5


权限用resource+action方式,至于resource要多细你就自己定义了。
另外如果想要赋权限更灵活,那就再把user分为usergroup。
可以参考liferay对于权限的定义,很细了。

#6


up.........

#7


该回复于2010-10-09 14:26:47被版主删除

#8


一般的比较大型的权限管理系统都是采用RBAC模式(Role-base Access Control),即基于角色的访问控制。

简单的说就是自己抽象出一个模型,包括用户、角色和权限。

1. 所谓的权限就是用户对模块的访问控制,即对某个模块用户是否有C/R/U/D等操作
2. 角色可以被授予多个权限
3. 用户可以被分配角色,继而拥有角色所拥有的权限。

整个权限管理涉及到认证和授权。授权说白了就是向数据库中添加数据;
认证涉及到两部分:登陆认证和及时认证。
    
  登陆认证:就是在登陆时要验证登陆者拥有的所有角色所拥有的所有的权限(注意其中涉及到权限冲突的解决问题),登陆成功后根据验证的信息给当前用户开放具有读取权限的模块,进而实现权限认证。

  及时认证:这是登陆成功之后要进行的操作,即登陆成功后用户可能点击某个模块,此时将会显示该模块的一些信息,这是就要及时认证,验证用户对当前点击的某块拥有的权限,主要是验证增、删、改权限,如果有则给用户开放对应的操作功能,如果没有权限当然就没有这些功能了。

这只是简单的列举了一下,希望对楼主有所帮助。

#9


你说小公司用这样?用户表  工作组表  权限表,那大公司都是怎么设计的?跪求?

#10


一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表

#11


该回复于2010-10-11 10:21:41被版主删除

#12


火龙果强大

#13


引用 10 楼 bao110908 的回复:
一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表


  
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分  
这里发言,表示您接受了CSDN社区的用户行为准则。 
请对您的言行负责,并遵守*有关法律法规,尊重网上道德。 
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。 
 

#14


引用 10 楼 bao110908 的回复:
一个完善的权限模块可能比你的应用更为复杂!

最简单的权限模块在数据库中应至少有以下五张表:

用户表
角色表
权限表
用户角色表
角色权限表

更高级一些的还有:

用户权限表
角色组表
角色组角色表


还有没有更更高级的了?

#15


回复13楼:
最近做到权限控制表太多,思路太混了!对于这高级权限的控制,思路如何的理清;脉路在哪,指点一二...