使用护照JS获取当前登录的用户名

Get current logged in username using Passport JS?

本文关键字:登录 用户 获取 JS      更新时间:2023-09-26

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

我的应用程序中有以下内容.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
}));

从我在类似帖子中读到的内容来看,我需要公开用户名,以便我可以在其他文件中使用它。我尝试在我的应用程序中执行此操作.js:

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

Home是我想使用用户名的路线,我正在尝试访问用户名,并显示如下警报:

alert(req.user.username);

这不起作用,req 对象未定义...我不确定我错过了什么?


设法让这个工作。在我的应用程序中.js我有:

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

然后在我的/home 路由中,我可以通过执行以下操作访问用户名:

req.user.username

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

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

在这里,您将用户名变量公开给视图

在翡翠文件中,你应该这样做

alert(#{username})

而不是

alert(req.user.username)

尝试:

app.use(cookieParser());
app.use(session({
            secret: 'cookie_secret',
            name: 'cookie_name',
            proxy: true,
            resave: true,
            saveUninitialized: true
        })
    );
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
    done(null, user.id);
});
passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

在控制器上使用 req.user

{ 用户名: user.local.username }

请点击以下链接

https://github.com/hnagarkoti/passportauthenticationWorking