2011-08-20 11 views
7

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.

+0

hai controllato HSQLDB dopo aver effettuato la disconnessione?l'utente è ancora nella tabella? mi è sembrato un problema di persistenza – add9

+0

@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. –

+0

usi springSecurityService.encodePassword() da qualche parte all'interno del processo? – add9

risposta

7

C'è un avvertimento su quel esercitazione

versioni precedenti del plugin non hanno incluso la logica crittografia delle password nella classe di dominio, ma rende il codice molto più pulito.

Sto indovinando la sicurezza-il plugin ui non sa di tale modifica e il confronto della password non criptata con quella cifrata sul database.

+0

Ne dubito. Vedi lo scenario aggiuntivo che ho menzionato. Succede anche senza il miglioramento dell'interfaccia utente. –

+1

Avevi ragione. Il plug-in dell'interfaccia utente non viene aggiornato con le modifiche. Ottima cattura! Ho rivisto il RegisterController e questo è il problema esatto! Vorrei averti ascoltato prima. Grazie :) –

+0

Prego. Ho avuto un problema simile con il plugin shiro e la sua documentazione qualche tempo fa. –

3

Sono riuscito a risolvere il mio problema. Il problema era la doppia crittografia. Sotto la sicurezza di primavera ui nel controller utente sulla linea 41 la password veniva crittografata e quindi ancora dalla classe di dominio così all'accesso stava confrontando una doppia password crittografata e una singola password crittografata. Per risolvere il problema ho appena commentato la riga 41 nel controller utente che stava crittografando la password

MODIFICA: Se hai problemi a capire dove si andrebbe a modificare il controller, puoi trovare il codice sorgente dei plugin scaricati in della vostra casa dell'utente

/.grails/version/projects/projectname/plugins

directory per l'editing (almeno su Mac/Linux, dunno dove si può trovare in Windows).

+0

Non sono sicuro che immergersi nella directory dei plugin e modificare i file sia il modo migliore per farlo. Preferirei sovrascrivere le classi interessate utilizzando gli script s2ui e apportando le modifiche necessarie nella versione sovrascritta. –

Problemi correlati