java - 使用 Spring Security 注解 isFullyAuthenticated v/s hasRole

标签 java spring spring-mvc spring-security spring-annotations

作为 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/

相关文章:

java - Spring @ControllerAdvice 异常处理程序返回 404 错误而不是 View

JavaFX 多线程问题

java - Java 中是否有与 C# 的 Lookup 数据结构等效的数据结构?

java - 范围 'session' 对于当前线程不活动 - 多线程

java - 无法将部件的内容 (Flux<DataBuffer>) 读取到单个字符串中

rest - Spring Data REST - 使用实体列表,Java HATEOAS 客户端

java - 如何将boilerpipe与本地html文件一起使用?

java - 如何在dialog.open()之后阻止JFace对话框关闭

java - 如何将现有对象传递给 Spring WebApplicationContext?

java - 如何在 Spring Boot 中以 JSON 形式抛出异常