Spring Security Taglibs控制语句

Bla*_*ake 8 spring-security

有没有办法用Spring Security taglib实现控制语句?

目前我们只能检查用户是否有角色...

<security:authorize access="hasRole('ROLE_ADMIN')">
   // display something
</security:authorize>
Run Code Online (Sandbox Code Playgroud)

别的怎么样?

nKo*_*ito 17

问题很古老,但无论如何......

你可以存储标签评价为变量(至少在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>
Run Code Online (Sandbox Code Playgroud)


rda*_*mon 5

如果您错过了已接受答案的评论.以下是如何制作控制语句<security:authorize>

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

<security:authorize access="!hasRole('ROLE_ADMIN')">
    // ELSE -- display something
</security:authorize>
Run Code Online (Sandbox Code Playgroud)

注意!else条件中的not语句

学分 @Blake


axt*_*avt 2

该属性的值access是一个SpEL表达式,根据 进行计算WebSecurityExpressionRoot,因此您可以使用它的所有方法和所有 SpEL 语法。

您还可以通过将自定义声明WebSecurityExpressionHandler为 bean 来自定义评估上下文的创建(然后您可以添加自己的方法和变量)。

  • 我使用以下内容来模拟控制语句 &lt;security:authorize access="hasRole('ROLE_ADMIN')"&gt; got com admin &lt;/security:authorize&gt; &lt;security:authorize access="!hasRole('ROLE_ADMIN')"&gt; no com 管理员 &lt;/security:authorize&gt; (7认同)
  • 是我一个人还是这没有回答问题?我想写 `&lt;c:choose&gt;&lt;c:when test="hasRole('SUPERUSER')"&gt;超级用户&lt;/c:when&gt;&lt;c:otherwise&gt;普通用户&lt;/c:otherwise&gt;&lt;/c:choose &gt;`。这不起作用。为什么它不起作用,我该如何让它起作用? (3认同)