Spring Security自定义过滤器(更改密码)
我正在使用Spring Security来保护对网站的HTTP请求。主要用途是保护页面安全,以便在尝试访问这些页面时将用户重定向到登录页面。
但是,我还有一个要求。在我的模型中,我可以将用户密码标记为临时密码,这样,当用户成功登录时,应自动强制他们更改密码。更改密码后,应将其转发到最初尝试访问的页面。
有人为此目的使用过Spring Security吗?我需要创建自己的自定义过滤器吗?
谢谢,
回答:
在Spring Security 3.0中,你可以实现一个custom AuthenticationSuccessHandler
。
在此处理程序中,你可以将具有临时密码的用户重定向到密码更改页面,而不是最初请求的页面。更改密码后,你可以使用SavedRequestAwareAuthenticationSuccessHandler
,将用户重定向到最初请求的页面,这是默认的处理程序实现。
public class MyHandler implements AuthenticationSuccessHandler { private AuthenticationSuccessHandler target = new SavedRequestAwareAuthenticationSuccessHandler();
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication auth) {
if (hasTemporaryPassword(auth)) {
response.sendRedirect("/changePassword");
} else {
target.onAuthenticationSuccess(request, response, auth);
}
}
public void proceed(HttpServletRequest request,
HttpServletResponse response, Authentication auth) {
target.onAuthenticationSuccess(request, response, auth);
}
}
@Controller("/changePassword")
public class ChangePasswordController {
@Autowired
private MyHandler handler;
@RequestMapping(method = POST)
public void changePassword(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(name = "newPassword") String newPassword) {
// handle password change
...
// proceed to the secured page
handler.proceed(request, response, auth);
}
以上是 Spring Security自定义过滤器(更改密码) 的全部内容, 来源链接: utcz.com/qa/429576.html