在nodeJS中,我使用护照模块进行身份验证。我想显示当前登录用户的用户名。
我尝试了以下代码:
passport.displayName
和
Localstrategy.username
有关详细信息,请参阅: http://passportjs.org/docs/profile
但这不起作用。有什么建议吗?
由于
答案 0 :(得分:51)
用户(由验证回调提供)在req.user
处的请求中设置为属性。
在您的案例req.user.username
和req.user.displayName
中,可以通过该对象访问用户的所有属性。
如果您正在使用Express,并希望将用户名作为模板中的变量公开,那么可以在渲染时完成:
app.get('/hello', function(req, res) {
res.render('index.jade', { username: req.user.username });
});
答案 1 :(得分:3)
我创建了一个简单的视图助手来访问身份验证状态和用户信息
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
。
答案 2 :(得分:1)
路线代码-
router.get('/', ensureAuthenticated, function(req, res){
res.render('administrator/dashboard',{title: 'Dashboard', user:req.user.username });
console.log(req.user.username);
});
.ejs文件代码-
Welcome: <%= user %>
答案 3 :(得分:0)
Express v4.x不支持助手
一个不错的选择是创建一个中间件,例如:
app.use((req, res, next) => {
res.locals.user = req.user;
next();
});
然后,您可以在视图中使用“用户”变量。
答案 4 :(得分:0)
这可能会有所帮助 req.session.passport.user