我正在使用以下方法遍历模型属性:
<li class="nav-item" th:each="item : ${navigation}"
sec:authorize='hasAnyAuthority("__${item.entitlements}__")'><a
class="nav-link" th:href="${item.url}" th:text="${item.display}"></a></li>
其中“ item.entitlements”是一个包含一个元素的Java列表。在每个项目上(目前)。我还验证了清单上每个项目的权利,并且在春季安全性上下文中分配的权利是相同的授权。
我还尝试了以下方法:
${#authorization.expression('hasAnyAuthority(__${item.entitlements}__)')}
这可能吗?如果是这样,我想念什么?我是否需要交换数据库以使用逗号分隔值的字符串?
我正在使用Spring Boot 2.1.8.RELEASE和以下百里香云春天安全性依赖项:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
最终是3.0.4.RELEASE版本
答案 0 :(得分:0)
您可以使用item.entitlements
之类的Thymeleaf实用程序方法将${#strings.listJoin(item.entitlements,',')}
转换为逗号分隔的字符串,然后在hasAnyAuthority
中使用它