AccountNoExpired与CredentialsNoExpired与accountnonlocked

eit6fx6z  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(193)

userdetails有三个参数accountnonexpired、credentialsnonexpired和accountnonlocked。
我不太明白他们在行动上的不同。如果设置为false,这三个参数都会阻止帐户。
所以为什么需要它们,如果它们执行相同的操作,我不太明白。毕竟,您可以保留一个参数,例如accountnonlocked,这就足够了。
请给我解释一下,否则我就不明白了。

7dl7o3gd

7dl7o3gd1#

这只是封锁一个帐户的一组单独的理由。每个参数都有自己的异常:

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
    }

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

相关问题