【问题标题】:Spring Security. Special differences - accountNonExpired vs credentialsNonExpired vs accountNonLocked春季安全。特殊差异 - accountNonExpired vs credentialsNonExpired vs accountNonLocked
【发布时间】:2021-06-09 02:10:45
【问题描述】:

UserDetails 具有三个参数 accountNonExpiredcredentialsNonExpiredaccountNonLocked

我不太明白他们在行动上的差异。如果设置为 false,所有三个参数都会阻止帐户。

那么为什么需要它们,如果它们执行相同的操作,我不太明白。毕竟,您可以保留一个参数,例如 accountNonLocked,这样就足够了。

请给我解释一下,否则我有些不明白。

【问题讨论】:

    标签: spring spring-mvc spring-security


    【解决方案1】:

    这只是一组单独的阻止帐户的原因。每个参数都有自己的例外:

    accountNonLocked | LockedException
    credentialsNonExpired | CredentialsExpiredException
    accountNonExpired | AccountExpiredException
    

    如果您编写自己的异常处理程序,则可以轻松自定义错误消息/代码逻辑。例如:

        @PostMapping("/login")
        public String login() {
            try{
                loginService.login();
                return "redirect:/main-page";
            }
            catch (CredentialsExpiredException e) {
                return "redirect:/change-credentials-page";
            }
            catch (LockedException e) {
                return "redirect:/write-to-admin-page";
            }
             ... etc
        }
    

    注意:这可能不是处理身份验证异常的正确方法,也不是处理登录逻辑的好方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-22
      • 2014-02-02
      • 2012-12-13
      • 2017-11-30
      • 2021-05-12
      • 2019-03-31
      相关资源
      最近更新 更多