4

每次我打电话subject.isPermitted()时,它都会向db发送一个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,抛出一个错误。

缓存管理器的实例 bean 名称是什么?我还需要配置其他东西吗?

4

1 回答 1

2

您需要在 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 插件配置它。

高温下,

莱斯

于 2010-12-13T18:25:34.787 回答