在身份验证后设置Spring RememberMe Cookie域

时间:2014-01-15 01:52:32

标签: spring authentication spring-mvc cookies remember-me

在用户进行身份验证后,我是否可以通过某种方式设置Spring Security RememberMe cookie的域名。 3.1.4版中API的更改使得子类化和覆盖setCookie()方法变得不切实际。此时,我没有我需要的身份验证信息来确定我要将cookie设置为哪个域。

基本上系统有两种类型的用户,我想根据用户登录的类型设置cookie域,这样他们只能使用remember-me身份验证来访问用户特定的区域。

一旦用户通过身份验证然后修改域名,然后将cookie添加回HttpServletResponse但我的工作无效,我正试图从HttpServletRequest中取出cookie。浏览器中显示的cookie仍然附加了根域。

有没有更简单的方法来做我想做的事情?这一切都感觉应该已经有功能在某处。是否可以在我的CustomPersistentTokenBasedRememberMeService类中重定向?我知道,如果抛出异常,用户还需要重定向哪个区域。

1 个答案:

答案 0 :(得分:0)

我最后听到了这篇帖子的建议:Spring Security RememberMe success handler or url filtering 并实现了一个AuthenticationSuccessHandler,我传递给我的表单登录配置和我记住我的配置。

<http>
    <form-login ... authentication-success-handler-ref="customAuthenticationSuccessHandler"/>
    <remember-me authentication-success-handler-ref="customAuthenticationSuccessHandler"/>
</http>

<beans:bean id="customAuthenticationSuccessHandler"
class="foo.bar.CustomAuthenticationSuccessHandler" />

然后在我的CustomAuthenticationSuccesshandler中覆盖onAuthenticationSuccess的最后我刚刚放了:

response.sendRedirect(response.encodeRedirectURL(redirectAddress));

它就像一个魅力