2014-10-16 13 views
6

Witajcie, próbujemy wprowadzić jakąś funkcjonalność do naszej aplikacji internetowej, Korzystamy z Spring Framework v4.1.1 i Spring Security v3 .1.7 dla aplikacji internetowej. Używamy niestandardowego dostawcy uwierzytelniania do naszego procesu uwierzytelniania, wszystko działa dobrze, , ale kiedy próbujemy ukryć pewne treści dla określonej roli na stronie przy użyciu tagu JSP z Spring Security, to nie działa.Wiosenne zabezpieczenia Tagi JSP <sec: autoryzuj dostęp = "hasRole ('')"> nie działa

Oto nasze bezpieczeństwo-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"/> 

Kiedy używamy tego znacznika <sec:authentication property="principal.authorities"/> w naszą stronę dostaliśmy [Vendedor, ADMINISTRADOR] wich jest poprawna.

ale kiedy staraliśmy się ukryć jakąś zawartość strony przy użyciu tagu:

<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> 

To nie działa.

Nie wiemy, co robimy źle. Dzięki za pomoc Pozdrawiam,

+0

Może być przydatny http://stackoverflow.com/a/26416548/3587592 – 0x5a4d

+0

Wygląda na to, że zdecydowanie powinno działać. Używam Spring Security 3.2.5 w naszym bieżącym projekcie i mam tagi bezpieczeństwa działające zgodnie z opisem. To nie jest kwestia białej spacji w tej grze (czy przed nazwą roli ADMINISTRADOR)? –

+2

Domyślnie role powinny mieć nazwę "ROLE_ *". W przeszłości znalazłem ten ciąg na stałe w kodzie źródłowym Spring. – fcracker79

Odpowiedz

2

spróbować,

<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

Dzięki za udostępnienie tego. To zadziałało dla mnie. Walczyłem z metodą hasRole ("XXX"). – Buminda

+0

ifAnyGranted jest przestarzałe, jeszcze jedną rzeczą, z którą miałem do czynienia jest przechowywanie User & Authorities, w moim przypadku musiałem użyć "hasAuthority ('admin')" lub "hasAnyAuthority ('admin', 'user')" –

0

jestem przy użyciu Wiosna Zabezpieczenia 4.2 i nie mógł użyć metody hasRole ... Ale ten kod działa dla mnie:

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