将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”
答案 0 :(得分:0)
您是否阅读过护照本地文件?
您是否在路线中使用了类似于片段的路线?
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
你可以在护照本地的文件上找到上面的代码。
或者您可以尝试在此处查看:https://github.com/egin10/login-passport/blob/master/routes/users.js