【发布时间】:2012-10-03 17:38:03
【问题描述】:
ServletContainerSessionManager 不是ValidatingSessionManager;它是否遵循底层容器来处理孤儿清理?这似乎不对。
我假设切换到DefaultWebSessionManager,因为它是一个功能齐全的实现,不会有任何风险或缺点?
有什么原因不是这个模块的默认值吗?
【问题讨论】:
ServletContainerSessionManager 不是ValidatingSessionManager;它是否遵循底层容器来处理孤儿清理?这似乎不对。
我假设切换到DefaultWebSessionManager,因为它是一个功能齐全的实现,不会有任何风险或缺点?
有什么原因不是这个模块的默认值吗?
【问题讨论】:
ServletContainerSessionManager 确实遵循容器的所有会话相关功能。 ShiroWebModule 默认是这个,因为这是 DefaultWebSecurityManager 中已经预期的默认值 - 无论您使用基本的 ini 设置、spring 还是 guice,目的都是保持默认值相同。
话虽如此,如果您需要在 Shiro 中管理会话,没有理由不切换到 DefaultWebSessionManager。确实,这就是 bindSessionManager 方法存在的原因。
要切换,只需覆盖bindSessionManager:
@Override
protected void bindSessionManager(AnnotatedBindingBuilder<SessionManager> bind) {
bind.to(DefaultWebSessionManager.class).asEagerSingleton();
}
【讨论】: