Bonjour,

J'ai une question au sujet du login Acegi. Pour diverses raisons, j'ai besoin de faire mon login en Java. Mais je n'ai pas envie de réécrire toutes les classes que fournit Acegi. J'utilise actuellement le bout de code suivant

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
    public String loginAction(){
        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(login, password);
        try{
            Authentication authe = daoAuthenticationProvider.authenticate(auth);
            SecurityContextImpl secureContext = new SecurityContextImpl();
            secureContext.setAuthentication(authe);            
            SecurityContextHolder.setContext(secureContext);
        } catch(AuthenticationServiceException e){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ce compte n'existe pas", e.getMessage()));
            return null;
        } catch(BadCredentialsException e){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Mot de passe incorrect", e.getMessage()));
            return null;
        } catch(LockedException e){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Votre compte a été bloqué. Contactez l'administrateur.", e.getMessage()));
            return null;
        } catch(DisabledException e){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Votre compte n'a pas encore été activé", e.getMessage()));
            return null;
        }
        return "loginAuthorized";
    }
Ce système fonctionne à merveille, à un bémol près : ce code ne génère pas le cookie utilisé par le service RememberMe d'Acegi.

Auriez-vous une idée de comment je pourrais l'inclure dans ce code?

Merci d'avance!