NodeJS Passport display nom d'utilisateur
Dans nodeJS, j'utilise le module passport pour l'authentification. Je voudrais afficher le nom d'utilisateur de l'utilisateur actuellement connecté.
J'ai essayé le code suivant:
passport.displayName
Et
Localstrategy.username
Et pour plus d'informations, veuillez également consulter: http://passportjs.org/docs/profile
Mais cela ne fonctionne pas. Toutes les suggestions?
Merci
3 réponses
L'utilisateur (tel que fourni par le rappel verify), est défini comme une propriété sur la requête à req.user
.
Toutes les propriétés de l'utilisateur sont accessibles via cet objet, dans votre cas req.user.username
et req.user.displayName
.
Si vous utilisez Express et que vous souhaitez exposer le nom d'utilisateur en tant que variable dans un modèle, cela peut être fait lors du rendu:
app.get('/hello', function(req, res) {
res.render('index.jade', { username: req.user.username });
});
J'ai créé un assistant de vue simple pour avoir accès à l'état d'authentification et aux informations utilisateur
var helpers = {};
helpers.auth = function(req, res) {
var map = {};
map.isAuthenticated = req.isAuthenticated();
map.user = req.user;
return map;
}
app.dynamicHelpers(helpers);
Après cela, vous pourrez accéder à l'objet auth
sur vos vues, par exemple auth.user.xxxx
.
Les aides ne sont pas prises en charge avec Express v4.x
Une bonne alternative est de créer un middleware tel que:
app.use((req, res, next) => {
res.locals.user = req.user;
next();
});
Ensuite, vous pouvez utiliser la variable" user " dans vos vues.