Comment obtenir current_user en utilisant le Printemps de Sécurité Graal plugin dans le SPG
Je suis novice dans le Graal. Je suis à l'aide de Printemps de Sécurité Graal plugin à des fins d'Authentification. Je veux obtenir de l'utilisateur courant dans mon point de vue gsp fichier.
Je suis comme ça ...
<g:if test="${post.author == Person.get(springSecurityService.principal.id).id }">
<g:link controller="post" action="edit" id="${post.id}">
Edit this post
</g:link>
</g:if>
Ici, je veux montrer Éditer ce post lien uniquement les articles qui créé par signed_in de l'utilisateur. Mais Il montre l'ERREUR -
Error 500: Internal Server Error
URI
/groovypublish/post/list
Class
java.lang.NullPointerException
Message
Cannot get property 'principal' on null object
Voici mon Post.groovy --
class Post {
static hasMany = [comments:Comment]
String title
String teaser
String content
Date lastUpdated
Boolean published = false
SortedSet comments
Person author
....... more code ....
Voici ma Personne.groovy Domaine de Fichier de Classe --
class Person {
transient springSecurityService
String realName
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
byte[] avatar
String avatarType
static hasMany = [followed:Person, posts:Post]
static searchable = [only: 'realName']
........ more code ......
S'il vous plaît aider.
OriginalL'auteur Free-Minded | 2013-07-08
Vous devez vous connecter pour publier un commentaire.
Essayez les balises fournies par springSecurity plugin, quelque chose comme:
En fait, vous essayez d'injecter un service sur votre gps page, vous pouvez le faire avec une certaine instruction d'importation sur la page, mais je dirais que ça ne sera pas bon en programmation, je pense que vous devriez envoyer session courante De l'utilisateur de l'instance du contrôleur à la SGP de la page, puis effectuer un contrôle sur elle:
disons que vous avez la méthode de contrôleur:
et sur votre gps page:
J'ai édité la réponse en fonction de vos besoins, veuillez jeter un oeil
Merci, de travail maintenant 🙂
Au Graal 2.4.4 le droit de la balise est:
<sec:ifLoggedIn>
OriginalL'auteur Saurabh Dixit
Vous pouvez utiliser le Printemps De Sécurité Taglibs. Pour ce que vous voulez faire, vérifier si l'utilisateur connecté est propriétaire de la poste, vous pouvez effectuer les opérations suivantes:
Si vous trouvez que vous avez besoin pour faire cette vérification beaucoup, je suggère de le mettre dans une coutume taglib
Puis l'utiliser comme
<sec:ifLoggedIn>
de travail. J'ai suivi votre code. maintenantEdit this Post
n'est pas en montrant à tous les postesêtes-vous d'obtenir une erreur ou d'une condition n'est pas vrai?
De belles œuvres. Mais aucune idée de la raison de la sec.nom d'utilisateur == 'mon' ne fonctionne pas.
OriginalL'auteur ikumen
Il ressemble, les balises existantes, qui font partie du Printemps plug-in de Sécurité ne sont pas suffisantes pour vous, c'est exact? Voir: http://grails-plugins.github.io/grails-spring-security-core/docs/manual/guide/6%20Helper%20Classes.html#6.1%20SecurityTagLib
Mon conseil est d'ajouter une nouvelle méthode à la Personne de l'entité, qui prend un Poste en tant qu'argument et renvoie true/false, si elle peut être modifiée (ou vice versa ajouter de nouvelles méthode de Post entité, la Personne qui prend comme argument, c'est jusqu'à votre décision).
Vous pouvez ensuite créer votre propre étiquette, qui utilise cette méthode, rend votre GPS plus agréable, même si elle n'est pas une étape obligatoire.
OriginalL'auteur Tom Metz
Une autre solution serait de créer un Filtre et de mettre l'Utilisateur dans la requête portée dans le cadre du filtre, comme ceci:
Alors votre GSP a juste besoin de regarder pour le "current_user' attribut, comme ceci:
OriginalL'auteur Brad Lee