为什么ShiroWebModule默认为非验证SessionManager?

时间:2012-10-12 20:53:45

标签: java jersey guice shiro

ServletContainerSessionManager不是ValidatingSessionManager;它是否遵循底层容器来处理孤儿清理?这似乎不对。

我认为切换到DefaultWebSessionManager,因为它是一个功能齐全的实现,没有风险或缺点? 有什么理由不是这个模块的默认值吗?

1 个答案:

答案 0 :(得分:1)

ServletContainerSessionManager确实按照所有与会话相关的功能的容器。 ShiroWebModule默认为这只是因为这是DefaultWebSecurityManager中已经预期的默认值 - 无论你使用的是基本的ini设置,弹簧还是guice,目的都是保持默认值相同。

话虽如此,如果您需要管理Shiro内的会话,则没有理由不切换到DefaultWebSessionManager。实际上,这就是bindSessionManager方法存在的原因。

要切换,只需覆盖bindSessionManager

@Override
protected void bindSessionManager(AnnotatedBindingBuilder<SessionManager> bind) {
    bind.to(DefaultWebSessionManager.class).asEagerSingleton();
}