Shiro grails插件-config

Shiro grails插件-config,grails,shiro,Grails,Shiro,使用ehcache+terracotta设置shiro会话缓存,将这些配置放在config.groovy中- security.shiro.sessionDAO=“org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO” //此名称与ehcache.xml中的缓存名称匹配: security.shiro.sessionDAO.activesessioncachename=“shiro-activesessioncache” secur

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

security.shiro.sessionDAO=“org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO”

//此名称与ehcache.xml中的缓存名称匹配: security.shiro.sessionDAO.activesessioncachename=“shiro-activesessioncache” 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\u ehcache.xml”

//在Shiro的SecurityManager上配置上述CacheManager //要将其用于Shiro的所有缓存需求,请执行以下操作: security.shiro.securityManager.cacheManager=“org.apache.shiro.cache.ehcache.EhCacheManager”

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


提前感谢

我发现这可以用一种方法来实现-

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

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.在
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
put-

security.shiro.session.mode="native"

我想这可以通过一种方式实现-

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

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.在
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
put-

security.shiro.session.mode="native"