Заявление о контроле Spring Security Taglibs - PullRequest
8 голосов
/ 17 мая 2010

Есть ли способ реализовать оператор управления с помощью ярлыков Spring Security?

В настоящее время мы можем только проверить, есть ли у пользователя роль ...

<security:authorize access="hasRole('ROLE_ADMIN')">
   // display something
</security:authorize>

Как насчет еще?

Ответы [ 3 ]

16 голосов
/ 04 июля 2013

Вопрос старый, но все равно ..

Вы можете сохранить результат оценки тега в переменной (по крайней мере, в версии 3.1), а затем использовать его в стандартной конструкции if/else. Я думаю, что это более полезное решение, чем предыдущее.

<security:authorize access="hasRole('ROLE_ADMIN')" var="isAdmin" />
<c:choose>
   <c:when test="${isAdmin}">superuser</c:when>
   <c:otherwise>ordinary user</c:otherwise>
</c:choose>
5 голосов
/ 22 апреля 2013

Если вы пропустили комментарий принятого ответа. Вот как сделать контрольный оператор из <security:authorize>

<security:authorize access="hasRole('ROLE_ADMIN')">
    // IF -- display something
</security:authorize>

<security:authorize access="!hasRole('ROLE_ADMIN')">
    // ELSE -- display something
</security:authorize>

Обратите внимание на оператор ! not в состоянии else

кредитов до @Blake

2 голосов
/ 17 мая 2010

Значением атрибута access является выражение SpEL , сопоставленное с WebSecurityExpressionRoot, поэтому вы можете использовать все его методы и весь синтаксис SpEL.

Также вы можете настроить создание оценочного контекста, объявив пользовательский WebSecurityExpressionHandler в качестве компонента (затем вы можете добавить свои собственные методы и переменные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...