Grails Spring Security (obtenir l'utilisateur actuel)
Est-il jamais un cas pour:
def user = User.get(springSecurityService.principal.id)
sur
def user = springSecurityService.currentUser
Tout ce que je peux penser à est de prévenir les paresseux inits ou de s'assurer de données en cours d'utilisation n'est pas obsolète?
source d'informationauteur dre
Vous devez vous connecter pour publier un commentaire.
Dans la pratique, je ne vois pas beaucoup de différence entre ces deux. Je serais enclin à utiliser
Parce que c'est légèrement plus courte que l'autre forme, c'est ce que le plugin docs recommander, et il n'y pourrait certaines autres de la mise en cache de l'utilisateur au sein du plugin (au-delà de la mise en cache est déjà prévue par Hibernate).
Mise à jour
La méthode
SpringSecurityService.getCurrentUser()
est maintenant obsolète et selon la javadoc commentairePersonnellement, je pense que c'est déraisonnable pour marquer une méthode obsolète sans fournir des conseils sur les usages doivent être remplacés avec, donc, jusqu'à ce que ladite documentation est disponible, je serais enclin à continuer à l'utiliser.
Bien, il y a une légère différence entre les deux. Le la documentation points.
currentUser
renverra toujours le domaine de l'instance de l'utilisateur actuellement connecté.principal
d'autre part, récupère l'utilisateur actuellement connecté estPrincipal
. Si authentifié, le client doit être ungrails.plugin.springsecurity.userdetails.GrailsUser
sauf si vous avez créé une coutumeUserDetailsService
auquel cas il sera ce que la mise en œuvre deUserDetails
vous utilisez.Si pas authentifié et la
AnonymousAuthenticationFilter
est active (true par défaut), puis une normeorg.springframework.security.core.userdetails.User
est utilisé.Espoir qui aide à clarifier les choses.
Nous avons juste rencontré un cas où le code a été à l'aide de currentUser et de l'échec, parce qu'il n'y avait pas d'enregistrement d'Utilisateur de l'Utilisateur de domaine. Dans notre cas, le principal.nom d'utilisateur travaillé car nous avons eu une coutume UserDetailsService qui a été la création d'un GrailsUser à la volée si l'un n'existe pas dans la table User.
De sorte que la distinction est importante.