Подтвердить что ты не робот

Имя пользователя Nodejs Passport

В nodeJS я использую модуль паспорта для аутентификации. Я хотел бы показать имя пользователя для текущего пользователя.

Я попробовал следующий код:

passport.displayName

и

Localstrategy.username

И для получения дополнительной информации см. также: http://passportjs.org/docs/profile

Но это не работает. Любые предложения?

Спасибо

4b9b3361

Ответ 1

Пользователь (предоставленный проверкой обратного вызова) устанавливается как свойство в запросе в req.user.

Любые свойства пользователя могут быть доступны через этот объект в вашем случае req.user.username и req.user.displayName.

Если вы используете Express и хотите выставить имя пользователя как переменную в шаблоне, это можно сделать при рендеринге:

app.get('/hello', function(req, res) {
    res.render('index.jade', { username: req.user.username });
});

Ответ 2

Я создал простой помощник вида для доступа к статусу аутентификации и информации о пользователе

var helpers = {};

helpers.auth = function(req, res) {
    var map = {};
    map.isAuthenticated = req.isAuthenticated();
    map.user = req.user;
    return map;
}

app.dynamicHelpers(helpers);

После этого вы сможете использовать объект auth в своих представлениях, например auth.user.xxxx.

Ответ 3

Помощники не поддерживаются Express v4.x

Хорошей альтернативой является создание промежуточного программного обеспечения, такого как:

app.use((req, res, next) => {
    res.locals.user = req.user;
    next();
});

Затем вы можете использовать переменную "пользователь" в своих представлениях.

Ответ 4

Это может помочь req.session.passport.user

Ответ 5

Код маршрута -

router.get('/', ensureAuthenticated, function(req, res){
  res.render('administrator/dashboard',{title: 'Dashboard', user:req.user.username });
  console.log(req.user.username);
});

.ejs Код файла -

Welcome:  <%= user %>