如何在 grails shiro 中使用缓存权限
Posted
技术标签:
【中文标题】如何在 grails shiro 中使用缓存权限【英文标题】:How to use cache permissions in grails shiro 【发布时间】:2011-05-24 10:35:51 【问题描述】:每次我调用subject.isPermitted()
,它都会向数据库发送一条sql。
我怎样才能缓存它?有什么例子吗?谢谢。
我阅读了 shiro grails 插件的文档,但无法解决。
数据源:
hibernate
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
如何将缓存管理器设置为 shiro?我尝试spring.resource,抛出一个错误。
cachemanager 的实例 bean 名称是什么?我还需要其他配置吗?
【问题讨论】:
【参考方案1】:您需要在 Shiro 的 SecurityManager 上配置一个 org.apache.shiro.cache.CacheManager 实例。大多数 Shiro 开箱即用的 Realm 实现都知道如何使用已配置的 CacheManager,并且会自动缓存从 Realm 权限查找返回的 AuthorizationInfo。
我不确定如何使用 Grails Shiro 插件执行此操作,但在 Shiro 的 INI 中,您可以这样做:
[main]
...
cacheManager = com.my.implementation.of.CacheManager
securityManager.cacheManager = $cacheManager
...
我建议询问 grails-user 邮件列表,看看是否有更“grailsy”的方式来配置 Grails Shiro 插件。
HTH,
莱斯
【讨论】:
@Les - 我也需要这样做,我想使用 grails 附带的内置缓存支持,但我认为 grails-shriro 插件的实现方式是不可能的。 Grails shiro 插件不扩展任何内置领域(例如 AuthorizingRealm),而是实现了它自己的领域接口。因此,为了进行缓存,我们必须在领域本身中手动进行,不能依赖 shiro 为我们缓存身份验证信息以上是关于如何在 grails shiro 中使用缓存权限的主要内容,如果未能解决你的问题,请参考以下文章
您可以在没有角色和权限的情况下将 Shiro 用于 Grails 吗?
Grails Shiro LDAP用户/角色身份验证:如何/如何捕获和存储以供重用
如何使用 shiro 在 grails 2.0 中实现 BasicHttpAuthentication?有啥亮眼的例子吗?