Passport在Node.js中使用express的本地策略会话

我是Node.js中的新手,并使用passport-local策略进行login会话。 我已经在我的networking应用程序中设置了所有的东西,但是会话中遇到了很大的问题。

我尝试了多个用户可以同时login到我的networking应用程序,但有一个问题。 用户之一(例如用户名是Paul)首先login,然后另一个用户(Chris)login,然后Paul的我的web应用程序的视图更改为Chris的视图。

我不知道你们明白我的意思,但这是我在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的位置。 但是,我不知道如何获取用户variables,并将其放入每个用户的ejs。

有人可以帮我在这里….?

提前致谢!

PS如果我问的是困惑,我可以再次编辑我的问题,并解释更多…

你不能使用全局variables,他们会覆盖每个请求,这将导致你正在描述的问题。

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

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

您还可以查看passport-local示例应用程序 ,以了解如何连接所有内容。