2014-10-16 95 views
6

嗨,我們正試圖實現一些功能到我們的web應用程序 我們正在使用Spring Framework v4.1.1和Spring Security v3 .1.7的Web應用程序。 我們正在爲我們的身份驗證過程使用自定義身份驗證提供程序,一切正常, 但是當我們嘗試使用Spring Security的JSP標記隱藏頁面中特定角色的某些內容時,它不起作用。春季安全JSP標籤<sec:authorize access =「hasRole('')」>不工作

這是我們安全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> 

它不工作。

我們不知道我們做錯了什麼。 感謝您的幫助 最好的問候,

+0

可能很有用http://stackoverflow.com/a/26416548/3587592 – 0x5a4d 2014-11-05 01:27:38

+0

這看起來應該可以工作。我在我們當前的項目中使用spring security 3.2.5,並且安全標籤如您所描述的那樣工作。這是不是一個空白問題在這裏(角色名稱ADMINISTRADOR之前的空間)? – 2014-12-15 18:48:15

+2

默認情況下,角色應該被命名爲'ROLE_ *'。在過去,我發現在Spring的源代碼中硬編碼的字符串。 – fcracker79 2015-01-15 11:22:59

回答

2

試試這個,使用Spring Security的4.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> 
+0

感謝您分享。它爲我工作。我正在用hasRole('XXX')方法掙扎。 – Buminda 2016-04-21 11:23:54

+0

ifAnyGranted已被棄用,我面對的另一件事是,我存儲了用戶和權限,然後在我的情況下,我不得不使用「hasAuthority('admin')」或「hasAnyAuthority('admin','user')」 – 2017-03-26 18:05:16

0

I'm並且不可能使用hasRole方法...... 但此代碼的工作對我來說:

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