2011-09-19 6 views
0

Selon spring-security-core documentation les seuls champs requis dans la classe utilisateur sontGrails Printemps sécurité champs obligatoires

String username 
String password 
boolean enabled 

Bien que, après loging-avec mon nom d'utilisateur et mot de passe, je reçois l'erreur suivante:

groovy.lang.MissingPropertyException: No such property: accountExpired for class: doit.recruiter.User

qui me fait penser que accountExpired, accountLocked et passwordExpired sont en fait requ ired. Comment puis-je faire fonctionner ma classe de domaine d'utilisateur avec seulement le nom d'utilisateur/mot de passe/permis?

Répondre

1

Oui, c'est un peu trompeur. L'implémentation par défaut du plugin utilise un wrapper Grails autour de la classe d'implémentation User pour l'interface utilisateur dans la sécurité de printemps. Cette interface nécessite les trois champs que vous ne voulez pas avoir, et à cause de cela, le plugin entier l'implémente aussi.

Le code qui échoue pour vous serait trouvé dans la mise en œuvre des détails de l'utilisateur par défaut:

boolean enabled = enabledPropertyName ? user."$enabledPropertyName" : true 
    boolean accountExpired = accountExpiredPropertyName ? user."$accountExpiredPropertyName" : false 
    boolean accountLocked = accountLockedPropertyName ? user."$accountLockedPropertyName" : false 
    boolean passwordExpired = passwordExpiredPropertyName ? user."$passwordExpiredPropertyName" : false 

La façon de contourner ce serait de mettre en œuvre votre propre UserDetailsService et simplement définir les valeurs à faux codés en dur. Vous pouvez aussi avoir les champs en tant que propriétés transitoires dans votre classe de domaine avec des getters qui retournent false.

détails utilisateur personnalisée recette peut être trouvée ici: http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/11%20Custom%20UserDetailsService.html

Questions connexes