当未经身份验证的客户端请求的URL需要如中定义的非匿名访问级别时security-config.xml,Spring Security会将HTTP重定向发送到我们的登录页面(例如/login)。没关系。
security-config.xml
/login
问题是,由于缺少现有会话(由客户端请求中提供的cookie标识),spring- security会发出重定向,该重定向还指定URL中的客户端新会话,例如/login;jsessionid=8o7pglapojus。
/login;jsessionid=8o7pglapojus
许多容器都支持此功能(显然,它在tomcat中可以正常工作吗?),但是看来Jetty(这就是我们现在正在使用的功能)不支持- 重定向的URL完全完整地传递到了我们的URL路由器(包括jsessionid“参数” ”),并且命名的会话没有/login通过码头/弹簧安全装置与请求相关联(即,在对/login请求的响应的Set- Cookie标头中提供了全新的会话ID )。
jsessionid
我们可以通过/login.*在路由中进行匹配来解决此问题,但是我很好奇是否有任何方法可以防止从身份验证重定向开始就发出会话ID。
/login.*
在Spring Security 3.0.0 M1或更高版本中,您可以disable-url- rewriting="true"在<http>名称空间中进行设置。看看是否有帮助。另请参阅此功能请求。
disable-url- rewriting="true"
<http>