Spring安全hasRole()和hasAnyRole是否区分大小写?

时间:2015-04-09 13:00:13

标签: spring spring-security jstl

在角色表中,当我检查

时,我将角色名称存储为“Admin”
<sec:authorize access="hasRole('ADMIN')">
    <c:out value='${message}'/> 
</sec:authorize>    

即使我以管理员用户身份登录,也不会打印邮件。

此表达式区分大小写

1 个答案:

答案 0 :(得分:1)

如果您需要Spring jsp页面授权,请按照以下步骤进行操作

步骤1:需要在Web安全文件中激活Web授权

  

使用表达式=&#34;真&#34;安全xml文件中的http标记

ex:<http .... use-expressions="true">

然后为下载弹簧配置pom.xml

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>

第二步。然后在你需要的jsp页面中添加标签lib

例如:

<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>

步骤3:然后检查jsp页面中的hasRole

例如:

<security:authorize access="hasRole('ROLE_USER')">
    This text is only visible to a user
    <br/>
</security:authorize>
<security:authorize access="hasRole('ROLE_ADMIN')">
    This text is only visible to an admin
    <br/>
</security:authorize>

在那个地方,userRole是区分大小写

您还可以根据角色提供完整页面访问权限。请使用以下示例代码

<intercept-url pattern="/user/**" access="hasRole('ROLE_USER')" />

此拦截允许该页面中的角色用户。

根据您的问题,您应该验证网络安全文件必须use-expression="true"

如果正确,请确保角色名称。因为它区分大小写