Nodejs Passport显示用户名

时间:2012-02-09 17:57:36

标签: node.js passport.js

在nodeJS中,我使用护照模块进行身份验证。我想显示当前登录用户的用户名。

我尝试了以下代码:

passport.displayName

Localstrategy.username

有关详细信息,请参阅: http://passportjs.org/docs/profile

但这不起作用。有什么建议吗?

由于

5 个答案:

答案 0 :(得分:51)

用户(由验证回调提供)在req.user处的请求中设置为属性。

在您的案例req.user.usernamereq.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