我正在使用基于FORM的身份验证和DataSourceRealm。当用户登录时,只要我保持登录状态,会话就会被正确缓存并保持相同的sessionID。
但是,当用户未登录时,Tomcat会在每次请求时更改会话。即使用户未登录,我也需要会话保持活动状态。
有没有办法让Tomcat缓存未经身份验证的用户会话?
编辑:
我刚注意到的一个值得注意的细节是它只发生在子域名上。即当我转到http://www.example.com/时,无论我是否经过身份验证,我都会在每个请求中正确获取相同的会话ID。但是,如果我转到http://subdomain.example.com/,未经身份验证的用户会为每个请求获取不同的sessionID。
在我的context.xml中,我有:
<Context sessionCookiePath="/" sessionCookieDomain=".example.com">
...
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
<Valve className="org.apache.catalina.authenticator.FormAuthenticator"/>
</Context>
另外,我尝试过使用:
changeSessionIdOnAuthentication="false"
没有成功。