2

使用 ehcache+terracotta 设置 shiro 会话缓存,将这些配置放入 config.groovy -

security.shiro.sessionDAO = "org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO"

// 此名称与 ehcache.xml 中的缓存名称匹配: security.shiro.sessionDAO.activeSessionsCacheName = "shiro-activeSessionsCache" security.shiro.securityManager.sessionManager.sessionDAO = "org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO "

// 配置 EhCacheManager: security.shiro.cacheManager = "org.apache.shiro.cache.ehcache.EhCacheManager" security.shiro.cacheManager.cacheManagerConfigFile = "classpath:session_ehcache.xml"

// 在 Shiro 的 SecurityManager 上配置上面的 CacheManager // 将它用于 Shiro 的所有缓存需求: security.shiro.securityManager.cacheManager = "org.apache.shiro.cache.ehcache.EhCacheManager"

但看起来 shiro 插件没有读取配置,使用“security.shiro”作为前缀

提前致谢

4

1 回答 1

0

发现这可以通过任何一种方式完成 -

1.在以下位置配置(覆盖插件定义)适当的 shiroSecurityManager bean resources.groovy

myShiroSessionDAO(org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO) {
    activeSessionsCacheName="shiro-activeSessionsCache"
}
myShiroSessionManager(org.apache.shiro.web.session.mgt.DefaultWebSessionManager) {
    sessionDAO = ref("myShiroSessionDAO")
}
myShiroCacheManager(org.apache.shiro.cache.ehcache.EhCacheManager) {
    cacheManagerConfigFile = "classpath:session_ehcache.xml"
   //cacheManager = CacheManager.create()
}
shiroSecurityManager(org.apache.shiro.web.mgt.DefaultWebSecurityManager) {
    cacheManager = ref("myShiroCacheManager")
    sessionManager = ref("myShiroSessionManager")
}

或者

2.配置shiroSecurityManager在Bootstrap.groovy

def sessionDao = new org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO()
sessionDao.activeSessionsCacheName="shiro-activeSessionCache"
shiroSecurityManager.sessionManager.sessionDAO = sessionDao
def cacheManager = new org.apache.shiro.cache.ehcache.EhCacheManager()
cacheManager.cacheManagerConfigFile = "classpath:session_ehcache.xml"
shiroSecurityManager.cacheManager = cacheManager

@Config.groovy放-

security.shiro.session.mode="native"
于 2012-01-05T04:23:49.057 回答