ServletContainerSessionManager
不是ValidatingSessionManager
;它是否遵循底层容器来处理孤儿清理?这似乎不对。
我认为切换到DefaultWebSessionManager
,因为它是一个功能齐全的实现,没有风险或缺点?
有什么理由不是这个模块的默认值吗?
答案 0 :(得分:1)
ServletContainerSessionManager
确实按照所有与会话相关的功能的容器。 ShiroWebModule
默认为这只是因为这是DefaultWebSecurityManager
中已经预期的默认值 - 无论你使用的是基本的ini设置,弹簧还是guice,目的都是保持默认值相同。
话虽如此,如果您需要管理Shiro内的会话,则没有理由不切换到DefaultWebSessionManager
。实际上,这就是bindSessionManager
方法存在的原因。
要切换,只需覆盖bindSessionManager
:
@Override
protected void bindSessionManager(AnnotatedBindingBuilder<SessionManager> bind) {
bind.to(DefaultWebSessionManager.class).asEagerSingleton();
}