2011-01-13 10 views
5

Ho un'azione che consente all'utente di modificare la sua password. Quando tutto va bene, mi piacerebbe disconnetterlo e mostrare un messaggio che tutto è andato bene e ora ha bisogno di accedere usando la sua nuova password.Grail Spring Security Core messaggio di logout

ho provato:

flash.message = "You may now login with your new password" 
redirect (controller: 'logout') 

Cosa è che regolatore Logout fa il reindirizzamento a:

redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 

E il mio messaggio flash non c'è più quando l'utente è sicuramente disconnesso e torna a pagina principale. Qualche idea su come farlo funzionare o forse qualche soluzione alternativa?

+1

Solo per curiosità, perché sei li logout? Se stavo usando il sistema, non mi aspetto di essere disconnesso dopo aver cambiato la mia password. –

+0

Nessun motivo speciale. Sto solo pensando che sia meglio così;) – jjczopek

risposta

3

LogoutController è solo lì per comodità. C'è un filtro che intercetta il suo reindirizzamento ed esegue la logica di logout, così puoi semplicemente reindirizzare direttamente a che:

flash.message = "You may now login with your new password" 
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 
+3

Funziona davvero? Quando l'ho provato, non è così. Se reindirizzamento a 'filterProcessesUrl' insieme a un' flash.message' il messaggio flash è disponibile per 'filterProcessesUrl', ma poi reindirizza a' logout.afterLogoutUrl' e quindi perde qualsiasi messaggio flash nel 2 ° reindirizzamento. Questo numero di graal di 4 anni parla di questo http://jira.grails.org/browse/GRAILS-2336 Per far funzionare tutto questo, penserei che il 'filterProcessesUrl' avrebbe bisogno di vedere se è stato ricevuto un' flash. messaggio' e quindi impostarlo nuovamente per assicurarsi che sia propagato. –

+1

Ho provato questo suggerimento, ma non riesce a rivelare un flash.message. Sto usando Grails 2.1.1 –

+1

Ho provato questo con spring-security-core-2.0-RC2 e non funziona neanche con esso. 'Debug dice DEBUG logout.SimpleUrlLogoutSuccessHandler - Usando l'URL di default:/login' e sta ignorando il valore impostato per grails.plugin.springsecurity.logout.afterLogoutUrl = '/ login/auth'. Il log di debug mostra che il logout viene indirizzato al login, quindi il login viene indirizzato al login/auth – spock99

0

Ecco un work-around per questo problema:

  • invalidare la sessione di
  • Setup il messaggio flash
  • reindirizzamento ad una pagina vuota
  • Poi corriamo jQuery delay e fadeutAndRemove sul Flash messaggio div che poi reindirizza al controllore di logout

Non è perfetto, ma si ottiene il messaggio per l'utente e li riporta alla pagina di login

Problemi correlati