apache shiro是否支持用户组概念?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache shiro是否支持用户组概念?相关的知识,希望对你有一定的参考价值。
我正在阅读shiro
文档,从未发现任何迹象表明shiro
支持API级别的用户组概念。
我本以为Subject.java
会有像getUserGroups
这样的方法,但事实并非如此。例如,如果我编写了一些旨在与众多身份验证系统一起使用的应用程序,那么当用户创建一些对象时,我想让对象创建者组中的所有用户都可以看到它,并且以身份验证提供程序不可知的方式进行,使用一些外观API,像shiro主题。
但看起来我不能用shiro
api这样做,这是正确的吗?
您如何在多auth应用程序中支持用户组概念?
我应该写一些UserGroupAwareSubject
扩展吗?
截至1.2的Shiro在其API中没有Group概念 - 它具有角色和权限的概念。
如果您只有角色,或者您可以使用您的组名称作为Shiro调用的角色(即realm.hasRole(roleIdentifier,authzInfo)使用您的组名称作为'roleIdentifier'),这不是问题。
如果您的应用程序中同时具有Role和Group概念,则可能无法轻松地使用subject.hasRole进行检查。如果您想将此作为一项功能,请打开feature request。
如果你想让它工作的两个选项是:
- 有一个Realm.hasRole调用的Realm检查你的角色和另一个Realm.hasRole调用你的组的域。
- 使用一个Realm来执行这两个操作,并使用可识别的标记将用于组检查的字符串作为前缀,例如:
subject.hasRole("group:myGroupName");
然后您的领域可以检查是否有该前缀,如果是,则进行组检查,如果没有,则进行角色检查。
除了这些选项之外,许多人在这种情况下做的是完全忽略角色和组检查,而是依赖于代码中的(更强大的)权限检查:
subject.isPermitted("document:1234:read");
然后,您的领域可以检查主题及其任何已分配的组或角色,以查看它们是否暗示该权限。如果是这样,那么您根本不需要任何组或角色检查,因为您的代码依赖于权限而不是(可能是易变的和众多的)组/角色概念。
有一些很好的理由why permissions are probably better than Role or Group checks,但如果您有其他感觉,并且仍然希望在Subject
API中代表任何组,请打开功能请求。
问候,
该
以上是关于apache shiro是否支持用户组概念?的主要内容,如果未能解决你的问题,请参考以下文章