Я работаю с
- Spring Boot 2.2.5
- Thymeleaf 3.0.11
- Thymeleaf Spring Security 5, 3.0.4 Release
Я использую следующие зависимости в моем 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>
Версии распознаны, и соответствующие фляги включены в мой проект. Я также добавил дополнительное пространство имен модуля безопасности Thymeleaf к своим шаблонам:
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
Я реализовал аутентификацию и авторизацию на основе ролей с Hibernate и MySQL и вход / выход из системы, что, на мой взгляд, работает нормально .
Тег sec:authentication
Thymeleaf Security Dialect работает нормально и также отображает правильные роли. Тег sec:authorize
, кажется, также работает при вызове метода sec:authorize="isAuthenticated()"
. Однако я испытываю трудности при оценке роли пользователя в шаблонах, использующих sec:authorize="hasRole('...')"
или th:if="${#authorization.expression('hasRole(''...'')')}"
. Мне кажется, что роли не могут быть оценены , хотя они правильно отображаются с использованием sec:authentication="principal.authorities"
.
Я суммировал свои подходы на тестовой странице, отображая следующий результат: ![showing image](https://i.stack.imgur.com/WmAQl.png)
Любая подсказка, где скрывается моя ошибка или недоразумение? Большое спасибо за вашу поддержку заранее.