2011-02-16 3 views
5

je voudrais obtenir la méthode dans mon bean session géré pour rôle spécifique "ROLE_ADMIN"Spring Security: la méthode n'est pas garanti avec l'annotation @PreAuthorize

config (applicationContext-security.xml):

<global-method-security pre-post-annotations="enabled" jsr250-annotations="enabled" secured-annotations="enabled"/> 
    <http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/**" access="isAuthenticated()"/> 
     <intercept-url pattern="/**" access="permitAll()"/> 
     <form-login 
     login-processing-url="/j_spring_security_check" 
     login-page="/login.jsf" 
     default-target-url="/main.jsf" 
     authentication-failure-url="/login.jsf" /> 

    <session-management> 
      <concurrency-control max-sessions="1" error-if-maximum-exceeded="false" /> 
    </session-management> 
    </http> 


    <authentication-manager alias="authenticationManager"> 
     <authentication-provider> 
      <user-service> 
       <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" /> 
       <user name="user1" password="user1" authorities="ROLE_USER" /> 
      </user-service> 
     </authentication-provider> 
    </authentication-manager> 

    <beans:bean id="loggerListener" class="org.springframework.security.authentication.event.LoggerListener"/> 

Bean méthode sécurisée:

@PreAuthorize("hasRole('ROLE_ADMIN')") 
    public String buy() { 
... 
    } 

Lorsque je me suis connecté sous user1 ou anonym et cliquez sur le bouton « acheter » sur le Web- page, il est toujours redirigé vers la page suivante.

Je m'attends à ce qu'une exception d'accès refusé se produise, ce qui n'est pas le cas.

Répondre

5

Rappelez-vous pour activer la sécurité au niveau de la méthode sur votre applicationContext-security.xml:

<sec:global-method-security secured-annotations="enabled" /> 

Si, vous insted utiliserez annotations avant ou après, utilisez:

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

Pour en savoir plus, voir:

http://forum.springsource.org/showthread.php?t=77862

note: Pour l'annotation s de jsr-250:

<sec:global-method-security jsr250-annotations="enabled" /> 
+1

effectivement essayé, c'est la même chose. Comme je le comprends, les annotations sécurisées sont par exemple. pour l'annotation @Secured, que je n'utilise pas du tout.J'utilise pré-annotation @PreAuthorize – sergionni

+0

@sergionni: Sory, je vais modifier pour vous laisser une réponse plus complète. – Iogui

+0

@logui, ok), np.Je suis l'analyse de ma config, peut-être son problème d'interception-url, je ne sais pas encore – sergionni

Questions connexes