我正在使用spring security 4.场景是我希望一个用户一次登录。也就是说,如果我的登录凭证知道某人并且我已经登录但是有人应该无法登录,除非直到我退出我通过设置成功实施 maximumSessions(1)和maxSessionsPreventsLogin(true)。
我的要求是,即使我已登录,如果有我的登录凭据的人正在尝试登录。我想显示错误消息,例如用户已登录我的thyemeaf登录页面..
在我的情况下,如果有我的登录凭据的人尝试登录即使我已登录,则显示无效的登录名或密码错误。
我想显示自定义错误消息,例如用户已在我的thyemeaf登录页面中登录。 我该如何实现呢? 注意: - 我正在使用自定义登录成功处理程序和自定义注销成功处理程序
答案 0 :(得分:1)
@Component("customAuthenticationFailureHandler")
public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
System.out.println("inside custom authentication failure handler");
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
response.sendRedirect("/login?error=true");
} else if (exception.getClass().isAssignableFrom(DisabledException.class)) {
response.sendRedirect("/login?account=disabled");
} else if (exception.getClass().isAssignableFrom(SessionAuthenticationException.class)) {
response.sendRedirect("/login?status=loggedin");
}
}
}