Perché la registrazione di un nuovo utente utilizzando il plugin per Acegi graal danno un “ruolo predefinito non trovato.” Errore
-
20-09-2019 - |
Domanda
Forse mettere un altro modo, come faccio a impostare un ruolo di protezione predefinito per gli utenti di nuova immatricolazione in Grails utilizzando teh Acegi plug-in?
Ho seguito l'Acegi / graal qui e sto utilizzando le annotazioni del controller -. anche se non ho ancora ottenuto nulla
Ho aggiunto un secondo ruolo chiamato WEB_USER e hanno aggiunto con successo di un utente a quel ruolo.
Quando uso il controller registro fro un nuovo utente, tuttavia, ottengo un messaggio di errore da Grails dicendo "Default role not found"
.
ho potuto vedere come avrei potuto codificare il mio modo più o meno di questo o la gestione di un elenco dei ruoli null nel metodo create appropriata, o anche la pubblicazione di un nome di ruolo predefinito indietro come un campo nascosto dalla vista di registrazione, ma si sentono un -Grails.
Credo che dovrebbe essere in grado di definire questo sia nella classe di dominio dell'utente stesso o in qualche modo nel rapporto nel database tra le tabelle utente e di ruolo.
Qual è il mezzo destinati a definire un ruolo predefinito, e perché mi appare questo messaggio.
Oh, e come si pronuncia Acegi?
Soluzione
Questa è una questione di documentazione. La pagina di registrazione non consente di selezionare i ruoli in quanto ci si aspetta che sarà una pagina di registrazione pubblica. Almeno un ruolo è necessaria la creazione di un utente in modo che si aspetta che ci sia un ruolo di 'default' configurato per questo flusso di lavoro.
È possibile impostare il ruolo predefinito in SecurityConfig.groovy con l'attributo 'DefaultRole'. Di default è 'ROLE_USER' ma può essere quello che vuoi. Ci deve essere un'istanza all'Autorità questo valore prima che gli utenti possono registrarsi.
La pronuncia è nelle FAQ - http://www.acegisecurity.org/faq.html
Altri suggerimenti
ho trovato la risposta. Tipicamente di Grails, c'è un ruolo predefinito chiamato ROLE_USER. Quando si registra un nuovo utente si guarda per un ruolo con quel nome e se ne trova uno che assegna all'utente.
Il messaggio "ruolo predefinito non trovato" è ambigua nel modo in cui si può leggere.
ho pensato che significava "è necessario definire un ruolo predefinito in qualche modo che gli utenti di nuova immatricolazione sono assegnati a esso".
Tuttavia penso che in realtà significa "è necessario creare la riga di database nella tabella ruoli che si chiama ROLE_USER così che funziona la configurazione normale".
Mi colpisce che parte della generazione graal delle caratteristiche di sicurezza dovrebbero solo per aggiungere un ROLE_ADMIN e ROLE_USER al bootstrap base di dati in qualche modo e hanno fatto con la possibilità dell'errore.