2014-01-15 67 views
0

有什么方法可以在用户认证后设置Spring Security RememberMe cookie的域。版本3.1.4中API的更改使得子类化和重写setCookie()方法变得不切实际。同样在那个时候,我没有我需要的认证信息来确定我想要设置cookie的域。认证后设置Spring的RememberMe Cookie域

基本上系统有两种类型的用户,我想基于哪种类型的用户已经登录来设置cookie域,以便他们只能使用记忆我身份验证访问其用户特定区域。

我试图从用户进行身份验证,然后修改域,然后将cookie添加到HttpServletResponse,但其不工作的HttpServletRequest的cookie。出现在浏览器中的cookie仍然附有根域。

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

回答

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)); 

,它就像一个魅力