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.