javascript - 使用 Passport JS 获取当前登录的用户名?

标签 javascript node.js express passport.js

我根据在线教程使用 Node、Express 和 Passport 创建了一个简单的用户登录应用程序。登录工作正常,但我想获取当前登录用户的用户名,但我似乎无法正常工作。

我的 app.js 中有以下内容:

/// Configuring Passport
var passport = require('passport');
var expressSession = require('express-session');

app.use(expressSession({
  secret: 'cookie_secret',
    name: 'cookie_name',
    proxy: true,
    resave: true,
    saveUninitialized: true
}));

app.use(passport.initialize());
app.use(passport.session({
    secret: 'cookie_secret',
    name: 'cookie_name',
    proxy: true,
    resave: true,
    saveUninitialized: true
}));

从我在类似帖子中读到的内容来看,我需要公开用户名,以便我可以在其他文件中使用它。我试图在我的 app.js 中这样做:

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

Home 是一条我想使用用户名的路由,我正尝试通过如下所示的警报访问用户名:

alert(req.user.username);

这不起作用,请求对象未定义...我不确定我缺少什么?


设法让这个工作。在我的 app.js 中我有:

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

然后在我的/home 路由中,我可以通过以下方式访问用户名:

req.user.username

最佳答案

你混合了两件事,一个是客户端,另一个是服务器端,两者都使用 javascript 但是在客户端渲染服务器端代码你不能直接在客户端使用。您必须像处理

一样传递给 View
app.get('/home', function(req, res) {
    res.render('home.jade', { username: req.user.username });
});

在这里您将用户名变量暴露给 View

在 Jade 文件中你应该这样做

alert(#{username})

代替

alert(req.user.username)

关于javascript - 使用 Passport JS 获取当前登录的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121782/

相关文章:

javascript - Fullcalendar - 月 View 中的列标题

node.js - 将函数传递给其他原型(prototype)

node.js - 多个 AWS 实例和 Node 事件

javascript - 通过 module.exports 发送多个函数抛出错误

javascript - 带有错误处理功能的外部扭曲函数

javascript - Jwplayer 与 angularjs

javascript - Jquery UI 对话框在 ssl 页面上不起作用

node.js - Mocha 正在复制对象的值,因此无法更新它

javascript - 我的正则表达式匹配不正确

node.js - 如何从nodejs模块导出函数获取回调数据