Имя пользователя Nodejs Passport
В nodeJS я использую модуль паспорта для аутентификации. Я хотел бы показать имя пользователя для текущего пользователя.
Я попробовал следующий код:
passport.displayName
и
Localstrategy.username
И для получения дополнительной информации см. также:
http://passportjs.org/docs/profile
Но это не работает. Любые предложения?
Спасибо
Ответы
Ответ 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 %>