Je voudrais avoir la connexion et la déconnexion sur la première page de mon application de grails et avoir n'importe quels messages d'erreur montrés là. J'ai une fonction d'authentification codée dans mon domaine utilisateur avec une fonction de déconnexion. Après que quelqu'un se connecte à la fonction d'authentification, je parviens à les faire revenir à l'écran principal en faisant une redirection:Je voudrais pouvoir laisser des personnes se connecter/se déconnecter sur la première page de mon application de grails
redirect(uri:"")
Si je fais la même chose avec la fermeture de session, je reçois une erreur lorsque la page est rendue , disant qu'il ne peut pas trouver l'objet utilisateur. Voici la sortie.
Erreur 500: Action exécution [logout] du contrôleur [com.thornglatch.pingo.UserController] fait exception: Aucun bien: nom pour la classe: com.thornglatch.pingo.User Solutions possibles: jeux Servlet: Grails URI: /Pingo/grails/user/logout.dispatch Message d'exception: Pas de cette propriété: nom de la classe: com.thornglatch.pingo.User Solutions possibles: jeux Causé par: Aucune propriété: nom de la classe: com.thornglatch .pingo.User solutions possibles: jeux classe: UserController à la ligne: [25]
Voici les choses qu'il essaie de rendre, je crois:
<div id="menu">
<nobr>
<g:if test="${session.user}">
<b>${session.user?.firstName} ${session.user?.lastName}</b> |
<g:link controller="user" action="logout">Logout</g:link>
</g:if>
<g:else>
<g:link controller="user" action="login">Login</g:link>
</g:else>
</nobr>
</div>
Nous vous remercions de votre temps et de votre attention.
Voici le code Authentifier:
def authenticate = {
println "Authenticate Entered"
def user = User.findByLoginAndPassword(params.login, params.password)
println "User = [" + user + "]"
if (user) {
session.user = user
def name = user.firstName ?: user.lastName
flash.message = "Hello ${user.login}"
redirect(uri:"")
} else {
println "Should be saying sorry"
flash.message = "Sorry, ${params.login}. Please try again.}"
redirect(uri:"")
}
} // authenticate
Cette version fonctionne. Dans celui qui n'a pas, la ligne de flash.message était:
flash.message = "Hello ${name}"
Je peux vivre avec cela, mais je voudrais savoir pourquoi utiliser le nom ne fonctionnait pas.
J'ai ajouté des informations supplémentaires après avoir réexaminé le code avec vos commentaires en tête. J'ai une version qui fonctionne maintenant, mais j'ai toujours une question, comme vous pouvez le voir. – Rben
Eh bien, "nom" devrait fonctionner. Avez-vous essayé avec "def name = 'Hardcoded Name'"? – mschonaker