我正在使用Spring安全性来验证我的网页中的用户。我想为每个用户展示他没有支架的角色。 如果我使用
<p sec:authentication='principal.authorities'></p>
我看到[ADMIN,USER]。 在thymeleaf,javascript或HTML中是否有一种方式只显示ADMIN,USER? 我知道在thymeleaf中有弹簧替换,但我怎么能传递上面代码的结果呢? 谢谢,问候
答案 0 :(得分:3)
thymeleaf-extras-springsecurity提供对#authentication
对象的访问权限,该对象可以返回GrantedAuthorities列表。分配的每个角色都有一个GrantedAuthority(前缀为&#39; ROLE _&#39;)。
您可以使用它来遍历并显示每个角色(删除ROLE_前缀):
<p th:each="authority : ${#authentication.getAuthorities()}"
th:if="${authority.getAuthority().startsWith('ROLE_')}"
th:text="${authority.getAuthority().replaceFirst('ROLE_', '')}">
</p>
答案 1 :(得分:0)
我认为你看到括号因为&#39; principal.authorities&#39;是一个数组。尝试使用jstl taglib。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<c:forEach var="item" items="principal.authorities">
<c:out value="${item}"/>
</c:forEach>
...
答案 2 :(得分:0)
对不起,对此线程来说很晚,但这是使用Thymeleaf和Thymeleaf Extras
的有效解决方案Role(s):
<th:block th:each="r, iter:${#authentication.getAuthorities()}">
<span th:text="${r}"></span>
<th:block th:if="${!iter.last}">, </th:block>
</th:block>
上面的代码将在最后一个角色之后添加逗号。