2011-08-18 5 views
9

Sto utilizzando il modulo "Sicuro" dal framework di gioco e funziona in modo ottimale. Posso accedere a un utente pubblicando un messaggio dal percorso/login nella mia applicazione.Come utilizzare i framework di gioco Modulo protetto per accedere a un utente dopo che l'utente è stato creato

Tuttavia, quando "creo/sottoscrivo" un nuovo utente, vorrei che quell'utente si connettesse automaticamente dopo la creazione dell'utente. Questo, non riesco a lavorare a livello di programmazione, cioè non dover pubblicare un modulo per accedere.

Il mio codice corrente per il mio utente di creare azione è come:

public static void create(@Required @Email String email, @Required String password, @Required @Equals("password") String passwordConfirmation) { 
     User user = new User(email); 
     user.password = new Crypto().encryptAES(password); 
    user.save(); 

     try { 
     Secure.authenticate(email, password, false); // <== this is the action in secure module mapped to /login 
    } catch(Throwable t) { 
     t.printStackTrace(); 
    } 
    } 

Così ho chiamata manualmente Secure.authentication(username, password, remember) metodo, ma questo mi reindirizza alla pagina di accesso e non la mia pagina di destinazione.

Ho la sensazione che un cookie o qualcosa non venga impostato perché sto chiamando Secure.authenticate direttamente e non tramite una richiesta/risposta, ma non sono sicuro.

Qualche idea?

risposta

9

Un'idea potrebbe essere quella di impostare il nome utente nella sessione (dopo che l'utente ha firmato con successo)

session.put("username", username); 

Questo farà in modo di ritorno Secure.connected() come previsto.

se necessita 'ricordi di me',

if(remember){ 
    response.setCookie("rememberme", Crypto.sign(username) + "-" + username, "30d"); 
} 

In realtà questo è ciò che fa Secure Module dopo l'autenticazione riuscita. Verifica Secure module

+0

che era davvero il pezzo mancante - grazie! – Damien

Problemi correlati