【问题标题】:Check particular value is set or not in JSP检查 JSP 中是否设置了特定值
【发布时间】:2017-10-25 16:45:16
【问题描述】:

我有一个多用户门户,我在securedHolder 中为两个用户(管理员和教师)存储了一个值。但不存储超级管理员的值。

我必须根据用户角色(管理员、教师和超级管理员)显示导航菜单。

所以我想检查 JSP 页面中是否设置了该值。如何在 JSP 中做到这一点?

我已检查用户角色,但无法检查特定值。

 <sec:authorize access="hasRole('ROLE_TEACHER')">
        -- Do something for teacher
        -- want to check the value here 
 </sec:authorize>

【问题讨论】:

    标签: java jsp spring-security


    【解决方案1】:

    为什么不在用户登录时将用户会话中的角色属性保存为“教师”、“管理员”或“超级管理员”?

    然后你可以使用 jstl 标签做这样的事情:

    <c:choose>
        <c:when test="${sessionScope.user.role == 'teacher'}">
            your nav bar for teachers
        </c:when>
        <c:when test="${sessionScope.user.role == 'admin'}">
            your nav bar for admins
        </c:when>
        <c:when test="${sessionScope.user.role == 'superadmin'}">
            your nav bar for superadmins
        </c:when>
        <c:otherwise>
            your nav bar for somebody else
        </c:otherwise>
    </c:choose>
    

    【讨论】:

    • 然后你可以添加任何你用来区分超级管理员的东西,作为你控制器中的模型属性。并使用&lt;c:when test=...&gt; 标签进行检查。
    • 该角色已经在Authentication 对象内的会话中,由spring-security 管理。没有必要这样做
    • 感谢回复,但我已经使用
    【解决方案2】:

    这样使用jstl

    <c:if test="${not empty var}">
       <div>do whatever you need</div>  
    </c:if>
    

    混合所有,我会这样做:

    <sec:authorize access="hasAnyRole('ROLE_TEACHER','ROLE_ADMIN')">
        <c:if test="${not empty var}">
           <div>do whatever you need</div>  
        </c:if>
     </sec:authorize>
    

    【讨论】:

    • 感谢回复,但我已经使用
    【解决方案3】:

    通过使用完成 &lt;sec:authorize access="principal.securedHolder['value']==requiredvalue"&gt;&lt;/sec:authorize&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2011-05-29
      • 2012-03-10
      相关资源
      最近更新 更多