【问题标题】:Spring Security AuthenticationException persistent?Spring Security AuthenticationException 持久化?
【发布时间】:2011-05-20 23:05:07
【问题描述】:

我在一个项目中使用 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 将不再附加到会话,因此我不会向用户显示错误。但是,似乎异常在刷新之后仍然存在。我有一个不正确的假设吗?我不应该这样使用我的请求对象吗?

谢谢! 伊德宾利

【问题讨论】:

    标签: java spring login spring-security


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 2012-03-05
      • 1970-01-01
      • 2020-07-04
      • 2017-07-15
      • 1970-01-01
      • 2017-12-27
      • 2011-01-28
      相关资源
      最近更新 更多