【发布时间】:2019-07-22 19:32:59
【问题描述】:
已经以各种方式提出了这个问题,但我没有得到关于我的问题的确切答案。
路由器 1
router.post('/user', (req, res, next) => {
passport.authenticate('local', function(err, user, info) {
if (err) {
return next(err);
}
if (!user) {
return res.send(info);
}
req.logIn(user, function(err) {
if (err) {
return next(err);
}
console.log(req.isAuthenticated()) //return true
return res.redirect('/myprofile/' + user.username);
});
})(req, res, next);
});
重定向的 URL 将在不同的路由器中进行呼叫。
router.get('/:username', (req, res) => {
console.log(req.isAuthenticated()) // return false
UserDetails.findOne({
username: req.params.username
}, (err, data) => {
if(err) {
res.status(400).send('Couldnt fetch details'); //define errs.
} {
res.render('dashboard/dash', {
firstname: data.firstname,
lastname: data.lastname
});
}
})
});
isAuthenticated 的值发生变化。
我可能错过了什么?
索引
// Express Session Middleware
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true,
cookie: { secure: true }
}));
//Passsport Middleware
app.use(passport.initialize());
app.use(passport.session());
app.get('*', function(req, res, next){
res.locals.user = req.user || null;
next();
});
【问题讨论】:
-
您需要查看此答案,它可能与您的问题req.isAuthenticated() doesn't work 相似,希望对您有所帮助。快乐编码:)
-
您是否尝试使用 https(我在问,因为如果设置了
cookie: {secure: true}},则会话 cookie 仅适用于 https。)
标签: node.js express passport.js