作为 Spring 安全注释的新手,我无法理解以下两行之间的真正区别。这是否意味着 hasRole 隐式检查身份验证?
- @PreAuthorize("isFullyAuthenticated() and hasRole('activateUser')")
+ @PreAuthorize("hasRole('activateUser')")
void activateUser(String username);
根据 Spring 文档,
isFullyAuthenticated() Returns true if the user is not an anonymous or a remember-me user
最佳答案
Does it mean that hasRole implicitly checks for authentication?
不绝对。它可能是 hasRole("ROLE_ANONYMOUS") ,这意味着未经身份验证的用户。 另请注意, isFullyAuthenticted() 与 isAuthenticated() 不同,因为前者需要显式身份验证,而后者则更宽松地接受“记住我”身份验证的用户。但在大多数情况下,hasRole 与真实角色一起使用,这至少意味着 isAuthenticated()。
所以区别在于第一行要求用户进行显式身份验证(而不是记住我)。
关于java - 使用 Spring Security 注解 isFullyAuthenticated v/s hasRole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797129/