【问题标题】:Shiro Guice PermissionsResolverShiro Guice PermissionsResolver
【发布时间】:2014-10-29 19:07:06
【问题描述】:

在 Shiro 文档中,他们在 shiro.ini 中配置全局 PermissionsResolver(请参阅 permissionResolver )。

globalPermissionResolver = com.foo.bar.authz.MyPermissionResolver
...
securityManager.authorizer.permissionResolver = $globalPermissionResolver

但是,我使用的是 Guice,所以我不想依赖 shiro.ini。我知道我可以打电话 setPermissionResolver() 在我的 Realm 中,但我宁愿不要,因为我有多个 Realms。

有什么想法吗?谢谢。

【问题讨论】:

  • 在所有领域调用 setter 有什么问题?要么就是这样,要么使用 shiro.ini。
  • 我猜。如果你将它附加到安全管理器,它只是有一个 globalPermissionResolver,所以我想有一种方法可以改变它(没有 shiro ini),而不是到处调用那个 setter。

标签: java guice shiro


【解决方案1】:

事实证明,通过更仔细地阅读上面提到的文档,它说:

If you want to configure a global PermissionResolver, each Realm that is to receive the configured PermissionResolver must implement the PermisionResolverAware interface. This guarantees that the configured instance can be relayed to each Realm that supports such configuration.

AuthorizingRealm 也碰巧已经实现了这个接口,所以所有授权领域都应该能够获取一个PermissionsResolver

为了将它与 Guice 绑定,我将其添加到我的ShiroWebModule

    bind(PermissionResolver.class).to(MyPermissionResolver.class).in(Singleton.class);

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2012-07-24
    • 2011-08-18
    • 2012-02-15
    • 2015-01-01
    • 1970-01-01
    • 2014-11-17
    • 2013-12-11
    • 2012-12-25
    相关资源
    最近更新 更多