【发布时间】:2014-12-12 03:33:34
【问题描述】:
我们正在尝试为我们的网络应用程序实现一些功能。我们将 Spring Framework v4.1.1 和 Spring Security v3.1.7 用于 Web 应用程序。我们在身份验证过程中使用自定义身份验证提供程序,一切正常,但是当我们尝试使用 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>
它不起作用。
我们不知道自己做错了什么。
【问题讨论】:
-
看起来它肯定可以工作。我在我们当前的项目中使用 spring security 3.2.5 并且安全标签如您所描述的那样工作。这不是空格问题,是吗(角色名称 ADMINISTRADOR 之前的空格)?
-
默认情况下,角色应命名为“ROLE_*”。过去我在 Spring 的源代码中发现该字符串是硬编码的。
-
管理员还是管理员?
标签: spring-mvc spring-security jsp-tags