1

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

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

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

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

4

1 回答 1

0
@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");
        }
    }
}
于 2017-07-18T13:31:11.483 回答