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

回到顶部