使用 Spring 安全注释 isFullyAuthenticated v/s hasRole

Using Spring Security Annotations isFullyAuthenticated v/s hasRole

作为 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()。

所以区别在于第一行要求用户进行显式身份验证(不记得我)。