我正在对express.js(在router / user.js内部)使用React
router.get("/", function (req, res) {
console.log("this is u" , req.user)
console.log(req.isAuthenticated());
if (req.user) {
res.json({ user: req.user })
} else {
res.json({ user: 'does not exsist' })
}
});
在console.log中,始终显示未定义的值
console.log("this is u" , req.user)
console.log(req.isAuthenticated());
上面的代码总是console.log false,现在我看了其他示例,他们提到了问题可能是由于您将内容放入server.js(或app.js)的方式,因此我检查并认为我的问题不是因为这个原因,反正这就是我要添加的东西
app.use(session({
secret: 'keyboard cat', // -> used to encode and decode the session, the seceret we used will be used to encode to decode
resave: true,
saveUninitialized: true,
}));
app.use(passport.initialize());
app.use(passport.session());
//Session
passport.use(new LocalStrategy(user.authenticate()));
passport.serializeUser(user.serializeUser());
passport.deserializeUser(user.deserializeUser());
如果有人要查看以下内容,这是我完整的正确存储库:https://github.com/irohitb/litifier-
现在,有人可以指导我解决此问题吗?
答案 0 :(得分:1)
这是因为未执行登录过程。
这导致未发送cookie,从而导致在下一个请求中未读取cookie,从而导致req.isAuthenticated()
返回false
请注意,使用自定义回调时,它将成为应用程序的 建立会话的责任(通过调用req.login())和 发送回复。
解决方案:
这看起来像您的注册页面,我认为您无需在此处进行passport.authenticate
。那是用于登录。删除它。
注册新用户后,请执行以下操作:
req.logIn(user, function (err) {
if (err) {
return next(err);
}
return res.json(user) // send whatever you want or redirect
});
答案 1 :(得分:0)
尝试在路由中添加{凭据:'include'}
示例
get('/test', {credentials: 'include'})