不在护照快递服务器上保存会话

时间:2017-04-21 14:15:57

标签: node.js session express passport-local passport.js

将node.js与快速服务器一起使用,我的目的是在会话中保存已登录的本地用户,这样我就可以从前端调用它,并在用户实际登录时获取用户信息。 / p>

为此,我使用快递和护照。如果正确登录并在请求中保存会话,则以下代码将返回用户。

我已经对该查询进行了调查,并正确地返回了数据。

passport.use('local-login', new LocalStrategy({
  usernameField: 'email',
  passwordField: 'pass',
  passReqToCallback: true
},
function(req, email, pass, done) {

 return modelUsers.login(email, pass, done);

}));

这是我的会话配置。

 app.use(session({
  resave: true,
  saveUninitialized: true,
  secret: 'strongertogether',
  cookie: { secure: false }
 } )); // session secret
app.use(passport.initialize());
app.use(passport.session());   // Persistent login sessions
app.use(cors());               //Required for signin facebook

据我所知,一旦登录完成,用户就会保存在会话中,而函数 req.isAuthenticated()应该返回一个真值但是为false,req.user是未定义的。

事实上,Twitter和Facebook会话正常工作。

从前端(Angular.js)我打电话给

app.get('/api/loggedin', usersController.loggedin);

那就是

function loggedin(req, res) {
 res.send(req.isAuthenticated() ? req.user : '0');
}

版本:

“express”:“^ 4.9.3”

“express-session”:“^ 1.11.3”

“本地护照”:“^ 1.0.0”

“护照”:“^ 0.2.2”

1 个答案:

答案 0 :(得分:0)

您是否阅读过护照本地文件?

passport-local npm

您是否在路线中使用了类似于片段的路线?

app.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login' }),
   function(req, res) {
  res.redirect('/');
});

你可以在护照本地的文件上找到上面的代码。

或者您可以尝试在此处查看:https://github.com/egin10/login-passport/blob/master/routes/users.js