我正在与
Spring Boot 2.2.5
胸腺叶3.0.11
Thymeleaf Spring Security 5,3.0.4版本
我在pom.xml中使用以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
可以识别版本,并且相应的jar都包含在我的项目中。我还向模板添加了Thymeleaf安全模块的额外名称空间:
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
我已经使用Hibernate和MySQL以及登录/注销实现了基于角色的身份验证和授权,据我所知,它可以正常工作。
Thymeleaf安全性方言的
sec:authentication
标记可以正常工作,并显示正确的角色。调用方法sec:authorize
时,sec:authorize="isAuthenticated()"
标记似乎也可以正常工作。但是,在使用
sec:authorize="hasRole('...')"
或th:if="${#authorization.expression('hasRole(''...'')')}"
评估模板中用户的角色时,我很费劲。我似乎无法评估角色,尽管可以使用sec:authentication="principal.authorities"
正确显示它们。我在测试页面上总结了我的方法,显示了以下结果:
我的错误或误解隐藏的任何线索?非常感谢您的提前支持。
最佳答案
经过更多研究后,我发现了我的问题。在角色名称(在数据源中)中添加前缀POST_
后,一切正常。
关于java - sec:authorize不起作用-Spring Boot 2,Thymeleaf 3,Thymeleaf Spring Security 5集成软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61363242/