javascript - 在 Node.js 中使用 express 的 Passport Local 策略 session

标签 javascript node.js session passport-local

我是 Node.js 的新手,在登录 session 中使用了 passport-local 策略。我已经在我的 Web 应用程序中设置了所有内容,但我在 session 方面遇到了一个大问题。

我试过多个用户可以同时登录我的网络应用程序,但出现问题。一个用户(例如用户名是 Paul)先登录,然后另一个用户(Chris)登录,然后 Paul 对我的网络应用程序的 View 更改为 Chris 的 View 。

我不确定你们是否理解我的意思,但这是我在 Node.js 中的代码之一

app.get('/location', isLoggedIn, function(req, res){
  var user_temp = {user: ''};
  user_temp.user = global_username;
  res.render('location/index1', user_temp);
});

下面的代码是Passport local-Strategy

var LocalStrategy = require('passport-local').Strategy;
passport.use('local-login',
  new LocalStrategy({
      usernameField : 'email',
      passwordField : 'password',
      passReqToCallback : true
    },
    function(req, email, password, done) {
      User.findOne({ 'email' :  email }, function(err, user) {
        if (err) return done(err);
        if (!user){
            req.flash("email", req.body.email);
            return done(null, false, req.flash('loginError', 'No user found.'));
        }
        if (!user.authenticate(password)){
            req.flash("email", req.body.email);
            return done(null, false, req.flash('loginError', 'Password does not Match.'));
        }
        var email_address = req.body.email;
        username_tmp = email_address;
        var username = email_address.substring(0, email_address.lastIndexOf("@"));
        global_username = username;
        pass = req.body.password;
        return done(null, user);
      });
    }
  )
);

我认为问题是因为 global_username,所以 Paul 可以看到 Chris 的位置 View 。但是,我不知道如何获取用户变量并将其放入每个用户的 ejs 中。

谁能帮我解决这个问题......?

提前致谢!

附言如果我问的很困惑, 我可以再次编辑我的问题并解释更多...

最佳答案

您不能使用全局变量,它们会针对每个请求被覆盖,这将导致您所描述的问题。

相反,如果您设置了 Passport 和 express-session正确地,Passport 将通过 req.user 为每个(经过身份验证的)请求提供用户数据:

app.get('/location', isLoggedIn, function(req, res) {
  res.render('location/index1', { user : req.user });
});

你也可以看看the passport-local example application了解一切是如何连接的。

关于javascript - 在 Node.js 中使用 express 的 Passport Local 策略 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252512/

相关文章:

node.js - 如何以及何时生成 Node/Express cookie secret ?

javascript - 未知高度容器中的文本元素

javascript - 从外部表单添加选定的 ="selected"的按钮

javascript - 使用 javascript 调整 Image() 对象大小不起作用

javascript - 没有数组就无法嵌套模式的原因是什么

node.js - amazon s3 deleteObjects nodejs - 无法正常工作

node.js - Node Postgresql 如何防止事务中止

iis - 为什么 FileSystemWatcher 会重置我们的网站 session ?

javascript - 使用html5的跨平台游戏开发

php - 如何通过 Javascript 将 php session 从一个页面转移到另一个页面?