La manipulation AccessDenied avec la Méthode de Niveau de Sécurité

j'ai une méthode sécurisée avec ressort de sécurité comme suit:

@PreAuthorize("hasRole('add_user')")
public void addUser(User user) ;

et si un utilisateur sans enoguh autorisations essaie de l'appeler
un accessDenied exception est levée:

org.springframework.security.access.AccessDeniedException: Access is denied

ce que l'on attend, mais la question est, pourquoi le défini accès refusé-gestionnaire de

dans security.xml fichier de configuration est pas de travail:

<access-denied-handler error-page="accessDenied"/>

Je veux dire par pas de travail que lorsque l'utilisateur avec pas assez d'autorisation lorsque vous essayez d'appuyer sur le bouton de la commande addUser qui va appeler le service addUser (qui est seulement accessible par l'utilisateur dispose de cette autorisation) une AccessDenied Exception est levée et c'est le comportement souhaité, mais l'utilisateur n'est pas redirigé vers la accès refusé d'exception tel que configuré dans xml.

ne devrait pas l'utilisateur obtient automatiquement redirigé vers la page accès refusé lorsque cette exception est levée, ou je dois définir un tel comportement explicitement dans le code ?

veuillez en informer.

Je suis en utilisant Printemps de Sécurité 3.0.5 avec JSF 2.1 et ICEFaces 2

Mise à JOUR: applicationSecurity.xml:

<beans:beans xmlns="http://www.springframework.org/schema/security"  
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.4.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<!-- Enable @pre, @post spring security method level annotations -->
<global-method-security pre-post-annotations="enabled" />   
<http use-expressions="true"  auto-config="true" access-denied-page="/accessDenied">
<session-management session-fixation-protection="none"/>
<remember-me  token-validity-seconds="1209600"/>
<intercept-url pattern="/accessDenied" access="permitAll"/>        
<intercept-url pattern="/login" access="permitAll"/>
<intercept-url pattern="/j_spring_security_check" access="permitAll" />
<intercept-url pattern="/faces/javax.faces.resource/**" access="permitAll" />
<intercept-url pattern="/xmlhttp/**" access="permitAll" />
<intercept-url pattern="/resources/**" access="permitAll" />        
<intercept-url pattern="/scripts/**" access="permitAll" />
<intercept-url pattern="/images/**" access="permitAll" />
<intercept-url pattern="/css/**" access="permitAll" />
<!-- All pages requires authentication (not anonymous user) -->
<intercept-url pattern="/**" access="isAuthenticated()" />
<intercept-url pattern="/faces/**" access="isAuthenticated()" />
<form-login default-target-url="/"   
always-use-default-target="true"            
login-processing-url="/j_spring_security_check"         
login-page="/login"
authentication-failure-url="/login?login_error=1"                                                               
/>
<logout logout-url="/logout" logout-success-url="/login" />     
</http>
<authentication-manager alias="authenticationManager">          
<authentication-provider user-service-ref="userDetailsServiceImpl"/>    
</authentication-manager>
</beans:beans>

Mise à JOUR 2 : débogue avant d'exception:

DEBUG [http-bio-8080-exec-1] (PrePostAnnotationSecurityMetadataSource.java:93) - @org.springframework.security.access.prepost.PreAuthorize(value=hasRole('add_user')) found on specific method: public void com.myapp.service.impl.UserServiceImpl.addUser(com.myapp.domain.User) throws java.lang.Exception,org.springframework.security.access.AccessDeniedException
DEBUG [http-bio-8080-exec-1] (DelegatingMethodSecurityMetadataSource.java:66) - Adding security method [CacheKey[com.myapp.service.impl.UserServiceImpl; public abstract void com.myapp.service.UserService.addUser(com.myapp.domain.User) throws java.lang.Exception,org.springframework.security.access.AccessDeniedException]] with attributes [[authorize: 'hasRole('add_user')', filter: 'null', filterTarget: 'null']]
DEBUG [http-bio-8080-exec-1] (AbstractSecurityInterceptor.java:191) - Secure object: ReflectiveMethodInvocation: public abstract void com.myapp.service.UserService.addUser(com.myapp.domain.User) throws java.lang.Exception,org.springframework.security.access.AccessDeniedException; target is of class [com.myapp.service.impl.UserServiceImpl]; Attributes: [[authorize: 'hasRole('add_user')', filter: 'null', filterTarget: 'null']]
DEBUG [http-bio-8080-exec-1] (AbstractSecurityInterceptor.java:292) - Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@c650d918: Principal: org.springframework.security.core.userdetails.User@db344023: Username: user@mycomp.com; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: access_viewUsers; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffde5d4: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: E6BBAC0CD4499B1455227DC6035CC882; Granted Authorities: access_viewUsers
DEBUG [http-bio-8080-exec-1] (AffirmativeBased.java:53) - Voter: org.springframework.security.access.prepost.PreInvocationAuthorizationAdviceVoter@1d1e082e, returned: -1
DEBUG [http-bio-8080-exec-1] (AffirmativeBased.java:53) - Voter: org.springframework.security.access.vote.RoleVoter@1eab12f1, returned: 0
DEBUG [http-bio-8080-exec-1] (AffirmativeBased.java:53) - Voter: org.springframework.security.access.vote.AuthenticatedVoter@71689bf1, returned: 0
Peut-être stackoverflow.com/questions/4186697/... donne quelques indices?
cet exemple fait sur mesure à la mise en œuvre, car il veut ajouter des données supplémentaires à la session de la date de refus d'accès se produit, je n'ai pas besoin de cette personnalisation, j'ai juste besoin de le comportement par défaut.
Merci de poster la sécurité complète de la configuration.
qu'entendez-vous exactement par "ne fonctionne pas"?
question mise à jour d'expliquer le ne travaillent pas le cas.

OriginalL'auteur fresh_dev | 2011-10-27