当前位置: 首页 > 知识库问答 >
问题:

Spring安全百里香已锁定异常自定义消息

司徒宇
2023-03-14

我有一个Spring Security保护的Spring Boot应用程序。一切都很好。但如果用户帐户被锁定,我如何将消息显示为account locked,而不是Invalid user name and password。

我的登录表单

<div class="panel-body">
  <div class="row text-center">
   <div th:if="${param.error}">Invalid user name and password.</div>
   <div th:if="${param.logout}">You have been logged out.</div>
  </div>
  <div class="row">
   <form class="form-horizontal" role="form" th:action="@{/login}"      method="post">
    <div class="form-group">
      <label class="col-md-4 control-label"> User Name </label>
      <div class="col-md-6"><input type="text" name="username" />
      </div>
    </div>
    <div class="form-group"> 
     <label class="col-md-4 control-label"> Password </label>
      <div class="col-md-6"><input type="password" name="password" />
        </div>
    </div>
    <div class="form-group">
      <div class="col-md-offset-4 col-md-6">
        <input type="submit" value="Sign In" class="btn btn-primary" />
      </div>
    </div>
    </form>
 </div>
</div>

安全配置

@Configuration
    public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

        @Autowired
        MyAuthenticationSuccessHandler myAuthenticationSuccessHandler;

        @Override
        public void configure(WebSecurity web) throws Exception {
            String[] unsecuredResources = { "/css/**", "/js/**", "/img/**", "/fonts/**" };
            web.ignoring().antMatchers(unsecuredResources);
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            String[] unSecuredUrls = { "login.html", "/login", "/home", "/appPwd.html", "/partials/pwdRequest.html" };
            http.authorizeRequests().antMatchers(unSecuredUrls).permitAll();
            http.authorizeRequests().anyRequest().authenticated().and().formLogin().loginPage("/login").defaultSuccessUrl("/", true)
                    .successHandler(myAuthenticationSuccessHandler)
                    /* .failureHandler(myAuthenticationFailureHandler) */.and().logout().permitAll();
        }
    }

共有1个答案

夏季萌
2023-03-14

您需要从 Spring 安全性中提取失败的原因。以下代码将起作用。

<div class="error" th:if="${param.error}"
     th:with="errorMsg=${session['SPRING_SECURITY_LAST_EXCEPTION'].message}">
    Reason: <span th:text="${errorMsg}">Wrong input!</span>
</div>
 类似资料:
  • 我在spring boot RESTfull项目中有一些特殊情况,而不是标准的自定义身份验证异常时的错误消息。我需要一个不同的消息取决于用户名或密码是错误的,或者如果用户名不存在,或者如果用户在数据库中被停用。目前我只能得到消息,我还没有找到任何解决方案,如何根据用户属性或特殊情况自定义消息。 我当前有如下自定义身份验证提供程序: 我有这样的定制用户详细信息服务: 在哪里可以处理来自的消息,并将其

  • 我有这个方法来处理所有缺少请求头的异常,但在一个控制器中,希望接收一个json作为主体。如果它是无效的json或为null,则会使用自定义消息删除异常: {“消息”:“错误请求”,“详细信息”:[“必需的请求正文丢失:public org.springframework.http.responseentity packages.fazerlogin(packages.bodylogin)throw

  • 我正在使用这个环境: Spring 4.0.5 Spring security 3.2.4 在我的环境中,我有一个SSO系统,我需要在这个系统中集成我的web应用程序。这个系统是私人产品。SSO机制的最终结果是在请求头中放置一个参数。所以我在申请中应该做的是: null 此场景类似于CAS集成场景;所以我从CAS集成着手;我写了我的自定义过滤器,我写了我的自定义入口点和处理请求所需的所有其他类,但

  • 我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常

  • 如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,如果自定义运行时异常类需继承 RuntimeException 类或其子类。 自定义异常的语法形式为: 在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。 自定义异

  • 我是一名Java编程新手(实际上已经在学习),我对如何处理不同的消息有些怀疑。 我的目标是将这些不同的消息包含在同一个类(CustomExcpse类)中,以避免在从其他类抛出新CustomExceptions的每个方法上一遍又一遍地编写相同的字符串。 到目前为止,我编码: > 一个自定义异常类,它从异常扩展而来,具有不同的消息(在示例中只有两个,但还有更多)作为Strings包含,当然还有构造函数