2010-01-12 2 views
1

Peut-être mis différemment, comment puis-je configurer un rôle de sécurité par défaut pour les utilisateurs nouvellement enregistrés dans Grails en utilisant le plugin ACEGI?Pourquoi l'enregistrement d'un nouvel utilisateur en utilisant le plugin ACEGI pour GRAILS donne un "Rôle par défaut non trouvé". erreur

J'ai suivi le tutoriel acegi/grails here et j'utilise des annotations de contrôleurs - bien que je n'ai encore rien sécurisé.

J'ai ajouté un second rôle appelé WEB_USER et ajouté un utilisateur à ce rôle.

Lorsque j'utilise le contrôleur de registre pour un autre nouvel utilisateur, cependant, un message d'erreur de Grails indique "Default role not found".

Je pouvais voir comment je pourrais coder mon chemin en manipulant une liste de rôles nulle dans la méthode create appropriée, ou même en publiant un nom de rôle par défaut en tant que champ caché dans la vue d'enregistrement, mais ils se sentent non-Grails.

Je pense que je devrais être capable de définir cela soit dans la classe de domaine utilisateur lui-même ou d'une manière ou d'une autre dans la relation dans la base de données entre l'utilisateur et les tables de rôles.

Quel est le moyen prévu pour définir un rôle par défaut et pourquoi je reçois ce message.

Oh, et comment prononcez-vous acegi?

Répondre

2

Ceci est un problème de documentation. La page d'inscription ne vous permet pas de sélectionner des rôles, car il s'agit probablement d'une page d'inscription publique. Au moins un rôle est requis lors de la création d'un utilisateur. Il s'attend donc à ce qu'un rôle "par défaut" soit configuré pour ce flux de travail.

Vous pouvez définir le rôle par défaut dans SecurityConfig.groovy avec l'attribut 'defaultRole'. Par défaut, il s'agit de 'ROLE_USER' mais cela peut être ce que vous voulez. Il doit y avoir une instance d'autorité avec cette valeur avant que les utilisateurs puissent s'enregistrer.

La prononciation est dans la FAQ - http://www.acegisecurity.org/faq.html

+0

merci Burt, une grande aide – Simon

0

J'ai trouvé la réponse. Généralement de Grails, il y a un rôle par défaut appelé ROLE_USER. Lorsque vous enregistrez un nouvel utilisateur, il recherche un rôle avec ce nom et s'il en trouve un, il l'affecte à l'utilisateur.

Le message "Rôle par défaut non trouvé" est ambigu quant à la façon dont il peut être lu. J'ai d'abord pensé que cela signifiait «vous devez définir un rôle par défaut quelque part afin que les utilisateurs nouvellement inscrits soient assignés à celui-ci».

Cependant, je pense que cela signifie vraiment "vous devez créer la ligne de base de données dans votre table de rôles qui est appelée ROLE_USER afin que la configuration normale fonctionne". Il me semble qu'une partie de la génération de grails des fonctions de sécurité devrait juste ajouter ROLE_ADMIN et ROLE_USER au bootstrap de la base de données d'une manière ou d'une autre et l'avoir fait avec la possibilité de l'erreur.

Questions connexes