2010-08-22 3 views

Répondre

4

Pour springSecurityService.principal.id car il n'y a pas de champ pour springSecurityService il ne peut pas travailler d'injection de dépendance, vous devez donc appeler ce springSecurityService.principal.id appels - org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id

Pour résoudre le problème avec l'utilisateur, vous aurez besoin du nom complet de la classe paquet. Alors combiné, cela devrait être

{com.yourcompany.yourapp.User.get(org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id)} 
+0

Merci beaucoup pour votre aide et la réponse très rapide. En attendant, j'ai écrit un petit plugin qui ajoute un getCurrentUser à chaque contrôleur. Ensuite, j'utilise le currentUser dans l'évaluateur. Il semble fonctionner Est-ce une mauvaise idée? (Je suis nouveau à la fois Groovy et Grails, donc je ne sais pas si c'est un anti-idiome pour ajouter ce genre de méthodes) –

+1

Cela m'a rappelé qu'il existe déjà une méthode 'getPrincipal()' ajoutée par Spring Security Core, donc cela raccourcirait l'appel à 'com.yourcompany.yourapp.User.get (principal.id)', mais il serait préférable d'avoir aussi une méthode 'getCurrentUser' - j'ajouterai cela pour la prochaine version. –

3

Je Burt's answer adapté tel qu'il ne jette pas une exception si personne est connecté

grails.commentable.poster.evaluator = { 

    def principal = org.springframework.security.core.context.SecurityContextHolder.context.authentication?.principal 

    if (principal?.hasProperty('id')) { 

     def currentUserId = principal.id 
     if (currentUserId) { 
      com.yourcompany.yourapp.User.get(currentUserId) 
     } 
    } 
} 
+0

merci, cela fonctionne aussi avec le plugin. ... mais il a quand même jeté une exception quand aucun utilisateur n'est connecté. Non [grails.rateable.rater.evaluator] paramètre défini ou l'évaluateur n'évalue pas à une entité – 10ToedSloth

+0

@ 10ToedSloth merci, je l'ai corrigé (4 ans plus tard) –

Questions connexes