2012-09-24 7 views
0

J'ai des problèmes pour créer un nouvel utilisateur depuis l'un de mes contrôleurs. J'essaye d'ajouter un nouvel utilisateur à ma collection d'utilisateur de MongoDB comme ceci. Les autorités sont définies comme un ensemble de rôles dans le domaine.grails spring-security create user

Role role = new Role(authority:"ROLE_USER") 
User user = new User(username:params.username,email:params.email,password:params.password,enabled:params.enabled, 
      accountExpired:params.accountExpired,accountLocked:params.accountLocked,passwordExpired:params.passwordExpired, 
      authorities:[role]) 

if (user.validate()) { 
     user.save(flush:true) 
     } else { 
     user.errors.allErrors.each { println it } 
     } 

Le même code est en mesure de créer un utilisateur avec succès à partir du bootstrap, mais quand je suis en train de faire la même chose d'un contrôleur simple que je reçois cette erreur:

2012-09-24 10:43:27,450 [http-8080-3] ERROR binding.GrailsDataBinder - Unable to auto-create type interface java.util.Set, class java.lang.InstantiationException thrown in constructor 

a: 662)

Répondre

0

On dirait que le problème est lié à la liaison de données. Vous devez d'abord créer User avec les autorités, puis ajouter un rôle en utilisant le domaine UserRole. Quelque chose comme:

Role role = Role.findByAuthority("ROLE_USER") 
User user = new User(username:params.username,email:params.email,password:params.password,enabled:params.enabled,  accountExpired:params.accountExpired,accountLocked:params.accountLocked,passwordExpired:params.passwordExpired) 
new UserRole(user: user, role: role).save(flush: flush, insert: true) 
user.save(flush:true) 

Pour plus d'informations comment créer l'utilisateur avec la sécurité de printemps, vous voudrez peut-être regarder Spring Security UI

+0

Cela pourrait être correct lorsque vous utilisez le support natif des bases de données. Cependant, il semble que la connexion vers MongoDB qui est réalisée en manipulant votre detailService ne se soucie pas vraiment des propriétés UserRole de cette manière pour cette question. Cependant je suis capable de sauver mes articles maintenant, mais je cours dans d'autres problèmes atm. –

Questions connexes