Я использую Spring Security для аутентификации пользователя на моей веб-странице. Я хотел бы показать каждому пользователю свои роли без скобки. Если я использую

<p sec:authentication='principal.authorities'></p>

Я вижу [АДМИН, ПОЛЬЗОВАТЕЛЬ]. Есть ли способ в чабреце, javascript или HTML показать только ADMIN, USER? Я знаю, что в тимелии есть замена пружины, но как я могу передать результат вышеупомянутого кода? С уважением

2
luca 17 Дек 2015 в 17:16

3 ответа

Лучший ответ

thymeleaf-extras-springsecurity предоставляет доступ к #authentication объекту, который может вернуть список предоставленных полномочий. Для каждой назначенной роли будет предоставлено право доступа (с префиксом «ROLE_»).

Вы можете использовать это для циклического прохождения и отображения каждой роли (удаляя префикс ROLE_):

    <p th:each="authority : ${#authentication.getAuthorities()}"
       th:if="${authority.getAuthority().startsWith('ROLE_')}"
       th:text="${authority.getAuthority().replaceFirst('ROLE_', '')}">
    </p>
3
Andrew 18 Дек 2015 в 11:26

Извините, опоздал к этой теме, но вот рабочее решение, использующее Thymeleaf и Дополнения Thymeleaf

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>

Приведенный выше код добавит запятую за исключением последней роли.

1
sunitkatkar 28 Ноя 2018 в 18:59

Я думаю, что вы видите квадратные скобки, потому что 'Principal.authorities' является массивом. Попробуйте с помощью 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>
...
0
Paolo Finamore 17 Дек 2015 в 14:39