【发布时间】:2017-08-13 19:43:25
【问题描述】:
我的最终目标是用当前用户没有的角色填充下拉列表。
<p th:text="${#bools.listIsTrue(Item.granted_authorities)}"></p>
打印出[true, true, true]
<p th:text="${Item.granted_authorities}"></p>
打印出[Ljava.lang.Object;@63a6ff07
<p th:text="${#lists.toList(Item.granted_authorities)}"></p>
打印出[ROLE_ADMIN, ROLE_SUPERADMIN, ROLE_USER]
<div th:with="RoleList=${#lists.toList(activeSessionsItem.granted_authorities)}">
<p th:text="${#lists.contains(RoleList, RoleList[0])}"></p>
</div>
打印出true
<div th:with="RoleList=${#lists.toList(activeSessionsItem.granted_authorities)}">
<p th:text="${#lists.contains(RoleList, 'ROLE_USER')}"></p>
</div>
打印出false
【问题讨论】:
-
我猜你的
RoleList是GrantedAuthoritys 的列表,不是Strings? -
通过所有用户的 SessionRegistry 填充的对象 userSettings.setGranted_authorities(((User) principal_item).getAuthorities().toArray());
-
您的
RoleList不包含任何字符串,因此#lists.contains将失败。考虑使用<sec:authorize和hasRole代替。 -
感谢您的快速回复。这不适用于当前登录的用户。
-
在这种情况下,考虑创建一个服务来为你做这件事并使用
@beanName.method(...)语法?
标签: spring spring-security thymeleaf