在Guice中设置Shiro的属性

时间:2017-05-07 21:58:21

标签: shiro

我正在尝试更改我的网络域名的Cookie名称和超时。

这是我的领域: -

public class TTShiroWebModule extends ShiroWebModule
{
    public TTShiroWebModule(ServletContext inServletContext)
    {
        super(inServletContext);
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void configureShiroWeb()
    {
        bind(CacheManager.class).to(MemoryConstrainedCacheManager.class);
        bindConstant().annotatedWith(Names.named("sessionManager.cookie.name")).to("SECURITYSESSIONID");
        bindConstant().annotatedWith(Names.named("securityManager.sessionManager.globalSessionTimeout")).to(3600000);
        expose(CacheManager.class);
        expose(WebSecurityManager.class);

        addFilterChain("/login/*", ANON);
        addFilterChain("/markup/*", USER, NO_SESSION_CREATION);

        bindRealm().to(TestRealm.class);
    }

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

查看返回的响应,看起来我们仍在使用JSESSIONID。我做错了什么?

我在安装TTShiroWebModule之前尝试过放置bindConstant。似乎不起作用。

1 个答案:

答案 0 :(得分:0)

我将bindSessionManager方法更改为: -

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

查看代码,我认为没有更好的方法。遗憾的是,setter方法没有用@Inject标记:(