Ho appena iniziato a utilizzare grails e installato i plug-in spring-security e spring-security-ui. Sto seguendo il tutorial dato here. L'applicazione inizia con un utente bootstrap me
con autorizzazione ROLE_ADMIN
.Grails/Spring Security: impossibile accedere con un utente appena creato
Con gli script di sovrascrittura dell'interfaccia utente sono riuscito a far funzionare la funzionalità del registro e funziona perfettamente. Ora, ho installato gli script User Management (grails s2ui-override user
) per provare ad aggiungere, modificare, rimuovere utenti.
Un nuovo utente viene creato correttamente, l'ho verificato rispetto all'istanza HSQLDB. Tuttavia, se mi disconnetto dall'applicazione e provo ad accedere con l'utente appena creato, l'applicazione mi dice che non è in grado di trovare un utente con il nome utente e la password forniti.
Non ho modificato la gestione di logout predefinita così sto usando /j_spring_security_logout
che come dice la documentazione invalida la sessione.
È un problema noto? Se sì, come posso aggirare questo o se no come posso eseguire il debug di questo problema?
EDIT:
Questo problema è anche persistente, senza l'aggiunta dell'interfaccia utente. Registrati come nuovo utente. Una volta terminata la verifica della posta elettronica, si accede automaticamente al sito. Ora fai il logout e prova ad accedere nuovamente. Dà lo stesso errore.
montaggio finale:
Il plugin UI viene fornito con il RegisterController che codifica ancora la password. Tuttavia, anche le nuove classi di dominio fornite con il core stanno facendo questo e la pratica raccomandata è che i controller non dovrebbero farlo. Ho commentato una riga che fa la codifica e il login/logout funziona almeno per lo scenario di base.
hai controllato HSQLDB dopo aver effettuato la disconnessione?l'utente è ancora nella tabella? mi è sembrato un problema di persistenza – add9
@imellan: Sì, l'utente è ancora nella tabella dopo aver effettuato il logout. In effetti è possibile eseguire una reimpostazione della password (utilizzando l'interfaccia utente di sicurezza a molla) e accedere nuovamente con una nuova password. –
usi springSecurityService.encodePassword() da qualche parte all'interno del processo? – add9