2020-01-11 19:04
这次是真的解决了。。。
我这里是对ehcache.xml的配置理解不够,
我之前的配置:
timeToIdleSeconds="600"
timeToLiveSeconds="1800"
这个意思:10分钟无访问,则过期,但是怎么都不会存活30分钟。
timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
假设 timeToIdleSeconds=x, timeToLiveSeconds=y
x=60, y=0, 60s之内必须有访问一次,如果没有则失效
x=0, y=60, 无论期间是否访问, 60s之后都会失效
x=30, y=60 每隔30s必须访问一次,如果没有访问则失效, 但总存活时间不超过60s
所以要设置session 30分钟不过期:
timeToIdleSeconds="1800"
timeToLiveSeconds="0"
表示: session 30分钟无访问则过期, 否则永不过期
2019-08-20 16:13
问题已解决, 与项目无关,ehcache.xml里面的chche的name=shiro-activeSessionCache的设置没生效,需要手动指定。
#参考: http://shiro.apache.org/session-management.html#SessionManagement-EHCacheSessionCacheConfiguration
#这里其实不用配置,默认就是这个策略
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
securityManager.sessionManager.sessionDAO = $sessionDAO
sessionDAO.activeSessionsCacheName =shiro-activeSessionCache