AuthenticationException

AuthenticationException

我在一个项目上使用Spring MVC和Spring Security,并使用它实现登录表单。我遇到了一种奇怪的行为,这是我所料想不到的,我想知道是否有办法避免这种情况。

当登录表单上出现身份验证错误时,我的控制器中有一个方法可以处理该错误:

@RequestMapping(value="/failed", method = RequestMethod.GET)
public String showLoginFailurePage(Model model, HttpServletRequest request) {
    String authExClass = "";
    AuthenticationException authEx = (AuthenticationException) request.getSession().getAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);

    if (authEx != null) {
      authExClass = authEx.getClass().getSimpleName();
    }
    model.addAttribute("authExClass", authExClass);
    return LOGIN_PAGE;
  }


最初可以正常工作,允许我在发生身份验证错误时显示错误。但是,如果刷新页面,则我希望AuthenticationException不再附加到会话上,因此不会向用户显示错误。但是,似乎异常一直持续到刷新为止。我有不正确的假设吗?我不应该这样使用我的请求对象吗?

谢谢!
伊德本特利

最佳答案

那么,是否有任何代码从会话中清除AUTHENTICATION_EXCEPTION?在再次尝试成功授权之前,Spring Security可能不会自动从会话中清除此会话-我认为您假设此会话属性已自动删除。

您可能希望自己从会话中清除此属性,以使其不再显示。

10-06 01:47