Bonjour,

J'utilise la balise Intercept-url de Spring Security pour controller les accès de ma page d'administration.
Cela fonctionne correctement mais j'ai un problème dans une situation.

Quand je me log comme ADMIN, le lien vers cette page est visible. Quand je click dessus j'y accède.
Quand je me log comme USER, le lien est invisible, si je tente malgré tout d'y accéder par l'url /admin.html, je suis redirigé vers la page d'access denied.

Cependant, si je me log comme admin et puis me déconnecte via le bouton "déconnexion" (sans fermer le browser), lorsque je me log comme user, le lien vers la page d'admin est toujours invisible mais si j'y accède par l'url, je deviens authentifié comme admin et j'accède à la page. Si je click sur un autre lien quelconque, je redeviens authentifié comme utilisateur..

Vraiment bizarre, je ne comprends pas...
Voici mes fichiers:

applicationContext-security.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
<http access-denied-page="/denied.html">
        <intercept-url pattern="/login.html" access="ROLE_GUEST,ROLE_USER,ROLE_ADMIN" filters="none" requires-channel="https"/>
        <intercept-url pattern="/admin*" access="ROLE_ADMIN" requires-channel="https"/>
        <intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" requires-channel="https"/>
        <port-mappings>
        	<port-mapping http="8088" https="8443"/>
        </port-mappings>
        <!-- <form-login /> -->
        <form-login login-page="/login.html" 
          		default-target-url="/accueil.html" 
          		authentication-failure-url="/login.html"
          		always-use-default-target="false" /> 
        <anonymous username="guest" granted-authority="ROLE_GUEST"/>
        <concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="false"/>
        <!-- <logout /> -->
        <logout invalidate-session="true" logout-url="/logout.html" logout-success-url="/login.html"></logout>
 
        <!--
        <logout invalidate-session="true"
        	logout-success-url="/logoutSuccessful.html"
        	logout-url="j_spring_security_logout"/>-->
    </http>
 
	    <authentication-provider user-service-ref="userDetailsService">
	    	 <password-encoder hash="sha">
	    	 	   <salt-source user-property="username"/>
	    	 </password-encoder>
	    </authentication-provider>
 
 <bean id="userDetailsService" class="cbc.security.UserDetailsServiceImpl">
    	  <property name="genericManager" ref="genericManager"/>  
    </bean>
UserDetailsServiceImpl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
@Transactional (readOnly=true, propagation=Propagation.REQUIRED)
public class UserDetailsServiceImpl extends GenericManagerImpl<Identification,String> implements UserDetailsService{
 
	@Autowired
	@Qualifier("genericManager")
	private GenericManager<Identification,String> userManager;
 
	@Override
	public UserDetails loadUserByUsername(String login)
			throws UsernameNotFoundException, DataAccessException {
		login = login.toUpperCase();
		Identification user = null;
		try{
			userManager.loadClass(Identification.class);
			user = userManager.getObjById(login);
 
			if(user==null)
				throw new UsernameNotFoundException(
						"User '" + login + "' could not be found."
				);
		}catch(ObjectRetrievalFailureException orfe){
			throw new UsernameNotFoundException(
					"User '" + login + "' could not be found."
			);
		}
		Set<Role> roles = user.getRoles();
		GrantedAuthority[] arrayAuths = new GrantedAuthority[roles.size()];
		int index = 0;
		for(Role role : roles)
			arrayAuths[index++] = new GrantedAuthorityImpl(role.getRoleName());
		return new User(login, user.getIdentPassword(), (user.getUtilisateur().getUActif()==1)?true:false, true, true, true, arrayAuths);
	}
 
 
	public void setGenericManager(GenericManager<Identification,String> manag)
	{
		this.userManager=manag;
	}
}
Si vous avez besoin d'autre chose, dites le moi
Merci pour votre aide!!