如果maxSessionsPreventsLogin设置为true并且某些具有我的登录凭据的用户尝试登录,如何在我的thymelaf登录页面中显示错误?

时间:2017-05-10 07:29:37

标签: spring-boot spring-security thymeleaf spring-security4

我正在使用spring security 4.场景是我希望一个用户一次登录。也就是说,如果我的登录凭证知道某人并且我已经登录但是有人应该无法登录,除非直到我退出我通过设置成功实施 maximumSessions(1)和maxSessionsPreventsLogin(true)。

我的要求是,即使我已登录,如果有我的登录凭据的人正在尝试登录。我想显示错误消息,例如用户已登录我的thyemeaf登录页面..

在我的情况下,如果有我的登录凭据的人尝试登录即使我已登录,则显示无效的登录名或密码错误。

我想显示自定义错误消息,例如用户已在我的thyemeaf登录页面中登录。 我该如何实现呢? 注意: - 我正在使用自定义登录成功处理程序和自定义注销成功处理程序

1 个答案:

答案 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");
        }
    }
}