Spring Security JSP标记<sec:authorize access =“hasRole('')”>不工作</sec:authorize>

时间:2014-10-16 17:00:51

标签: spring-mvc spring-security jsp-tags

大家好,我们正在努力为我们的网络应用程序实现一些功能, 我们将Spring Framework v4.1.1和Spring Security v3.1.7用于Web App。 我们使用自定义身份验证提供程序进行身份验证过程,一切正常, 但是当我们尝试使用Spring Security中的JSP标记为页面中的特定角色隐藏某些内容时,它不起作用。

这是我们的security-conf.xml

<http pattern="/resources/**" security="none" />

<http use-expressions="true">
    <form-login login-page="/login" authentication-failure-url="/loginerroneo"
        default-target-url="/seleccionar-empresa" always-use-default-target="true"/>
    <logout logout-success-url="/login" logout-url="/salir"/>
    <session-management invalid-session-url="/login" />
</http>

<authentication-manager>
    <authentication-provider user-service-ref="userDetailsService">
    </authentication-provider>
</authentication-manager>

<global-method-security pre-post-annotations="enabled"/>

<beans:bean id="userDetailsService" class="com.grupo.seguridad.acceso.service.impl.UserDetailsServiceAdapater"/>

当我们在页面中使用此标记<sec:authentication property="principal.authorities"/>时,我们得到了 [VENDEDOR,ADMINISTRADOR]这是正确的。

但是当我们尝试使用标记隐藏页面的某些内容时:

<sec:authorize access="hasRole('ADMINISTRADOR')">
   <button class="btn btn-small btnGuardar" href="#dlgGuardar" data-toggle="modal">
      <i class="icon-hdd"></i> <strong>Una Opcion</strong>
    </button>
</sec:authorize>

它不起作用。

我们不知道我们做错了什么。 谢谢你的帮助 最诚挚的问候,

2 个答案:

答案 0 :(得分:2)

试试这个,

 <security:authorize ifAnyGranted="ADMINISTRADOR">
    <button class="btn btn-small btnGuardar" href="#dlgGuardar" data-toggle="modal">
          <i class="icon-hdd"></i> <strong>Una Opcion</strong>
        </button>
    </security:authorize>

答案 1 :(得分:0)

我使用的是Spring Security 4.2并且无法使用hasRole方法... 但是这段代码对我有用:

<security:authorize access="hasAuthority('ROLE_ADMIN')">
you are an admin!
<security:authorize>