Javascript 使用Passport JS获取当前登录用户名?

Javascript 使用Passport JS获取当前登录用户名?,javascript,node.js,express,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: 'coo

在使用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.get('/home', function(req, res) {
  res.render('home.jade', { username: req.user.username });
});
根据我在类似文章中读到的内容,我需要公开用户名,以便在其他文件中使用它。我尝试在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.get('/home', function(req, res) {
  res.render('home.jade', { username: req.user.username });
});
Home是一个我想使用用户名的路径,我正试图通过如下警报访问用户名:

alert(req.user.username);
这不起作用,req对象未定义…我不确定我缺少什么


我设法让它工作起来了。在我的app.js中,我有:

app.get('/home', function(req, res) {
  res.render('home.jade', { username: req.user.username });
});
然后在我的/家庭路线中,我可以通过以下操作访问用户名:

req.user.username

您混合了两种东西,一种是客户端,另一种是服务器端,两者都使用javascript,但是对于客户端中的呈现服务器端代码,您不能直接在客户端中使用。您必须像处理视图一样传递到视图

app.get('/home', function(req, res) {
    res.render('home.jade', { username: req.user.username });
});
在这里,您向视图公开username变量

在翡翠档案中,你应该这样做

alert(#{username})
而不是

alert(req.user.username)
尝试:


在控制器上使用请求用户

{username:user.local.username}

请点击下面的链接


您在Jade中错误地访问了它,它不是
req.user.username
,而是
username
,所以在您的视图中执行类似于
div{username}
的操作,并查看它是否输出。在Jade中访问用户名时,这是可行的,但如何在项目中的不同javascript文件中访问用户名?例如,使用我从route js文件中的集合中获得的用户名和筛选记录。您必须在Jade创建的HTML中输出用户名,作为数据属性或在它自己的脚本标记中,然后在另一个javascript文件中从那里获取数据哦,我知道了,我认为有一种方法可以在js中获取用户名。我正在尝试你所说的,所以我将用户名包装在一个div中,如|#{user.username},然后我尝试使用alert(document.getElementById(“userid”).value)在我的js文件中访问它;但是我一直没有定义,我在jade文件中正确使用了div吗?谢谢!这在访问Jade中的用户名时有效,但是如何在项目中的不同javascript文件中访问用户名呢?例如,要使用我从route js文件中的集合中获取的用户名和筛选记录,您始终可以访问
req对象
中路由中的用户名,就像您所做的那样,然后将其作为控制器或模型的参数传递,您可以在客户端js中访问,并将其分配给如下
var username=”这样的变量#{username}”
我认为这不管用,它只是返回字符串“#{username}”不是这个主意吗?要将用户名保存在clientclient端谢谢,我已经在另一个js文件中进行了序列化和反序列化,我需要将其添加到app.js吗?我尝试了,但没有成功,我仍然无法访问路径中的req.user。