我正在与


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/

10-11 20:33