2013-06-30 12 views
8

Sono nuovo ai graal. E devo lavorare con la sessione. Ho visto la documentazione della sessione. Ma non ho idea di dove mettere il codice nel mio controller. Ho una pagina per i nomi di creazione degli studenti createStudent. Ora voglio che questa pagina sia accessibile solo quando l'utente sarà in sessione. Ora come posso farlo. Dovrei dover impostare l'utente in una variabile al momento del login. Qualcuno può aiutarmi per favore su questo?come usare la sessione in grails

def index() { 
    def user = session["user"] 
    if (user){ 
     redirect(controller: 'admistratorAction', action: 'createUser') 
    }else{ 
     redirect(controller: 'login', action: 'index') 
    } 

} 

risposta

12

è possibile utilizzare la session.getAttribute(key) e session.setAttribute(key, value) metodi all'interno del vostro controller. In alternativa, ci sono plugin come lo Spring Security Core Plugin che lo gestiscono già molto bene.

C'è un buon tutorial di Peter Ledbrook per il plug-in Spring Security here e i collegamenti della documentazione del plugin ad almeno un altro tutorial.

** Modifica **

come lei ha suggerito, al fine di utilizzare la sessione direttamente l'utente dovrebbe essere impostato nella sessione a un punto precedente. Ad esempio:

def setCurrentStudent() { 
    def aStudent = [name: "Student1"] 
    session["user"] = aStudent 
    render "Added $aStudent to the session." 
} 

Spring Security eseguirà automaticamente all'accesso. Quindi, è possibile accedere all'utente corrente in qualsiasi momento utilizzando springSecurityService.

class SomeController { 
    def springSecurityService 
    def someAction = { 
     def user = springSecurityService.currentUser 
     … 
    } 
} 
+0

grazie per la vostra risposta. Sto già usando il plug-in core di sicurezza di primavera. Ma non so come usare la sessione da esso. Fornisco un codice sorgente di esempio nell'editor. Reindirizza alla pagina di accesso se la condizione è falsa. ma non reindirizza la pagina createUser se è vera. Potete aiutarmi ora?! –

+0

Non sono sicuro di comprendere completamente il problema: perché è necessario utilizzare direttamente la sessione? Ho aggiornato la mia risposta con alcuni frammenti di codice. Spero che sia d'aiuto. – osborp

+0

grazie a @osborp per ora. Lavorerò sui dettagli della sessione più tardi. Ma in questo momento questa è la risposta per la base –

Problemi correlati