Javascript 会话未存储在浏览器cookie中
当我尝试在postman中运行API时,它工作正常,会话得到维护。但当我试图从UI部分运行它时,登录会话不起作用 这是我登录时使用的登录APIJavascript 会话未存储在浏览器cookie中,javascript,node.js,express,Javascript,Node.js,Express,当我尝试在postman中运行API时,它工作正常,会话得到维护。但当我试图从UI部分运行它时,登录会话不起作用 这是我登录时使用的登录API app.post('/user/login', (req, res, next) => { const body = req.body; let email = body.email; let password = body.password; const userDetails =
app.post('/user/login', (req, res, next) => {
const body = req.body;
let email = body.email;
let password = body.password;
const userDetails = db.collection(userProfiles);
userDetails.findOne({email: email}, function (err, user) {
if (err) {
return next(err);
} else if (!user) {
return res.status(400).send({
status: 'error',
message: 'user does not exist'
});
} else {
if (user.password == password) {
user_object = user;
req.session.user = user;
return res.send({
user_obj: user,
status: 'success',
message: 'Successfully logged in'
});
} else {
return res.status(400).send({
status: 'error',
message: 'Wrong Password'
})
}
}
return res.send(user);
});
});
这是我的会话API,在调用此API时从中发送user req.session.user
app.get('/user/dashboard', function (req, res) {
if (!req.session.user) {
return res.status(400).send({
data:'need to be logged in'
});
}
return res.status(200).send({
data:req.session.user
});
});```
The below is the javascript file from where i am trying to call the user stores in req.session.user
`
async function fetchUserId(){
let cookie = document.cookie;
let res = await fetch('http://127.0.0.1:8080/user/dashboard',
{redirect: 'follow',
headers:{
"Cookie":cookie
}});
let userJson = await res.json();
console.log(res);
console.log(userJson);
//return userJson;
};
`
when i hit the login API from Postman it is maintaining session and working fine but when i do the same from UI from browser it is giving error status 400 every time.
你可以做一个
fetch(url, options).then(function(res) { console.log(res} )
及
检查cookie是否真的存在,以及用户对象在哪里
您可以检查浏览器开发控制台,查看cookie是否正在更新
我看到你在头上放了个cookie。但是,与API相比,您正在req.session.user中寻找用户。尽管cookie在req.header[“cookie”]中。所以您试图说cookie对象在req.headers中。因此,它无法获取浏览器cookie。就像在我的例子中,从postman运行api时,它工作正常,用户会话也得到了维护。但唯一的问题是,当试图从UI part.console.log(req.headers)运行浏览器时;在这种情况下,只需尝试console.log(req)即可,您将能够在那里找到字符串/对象,或者您将知道没有任何请求进入APIConsole。log(req)没有记录任何内容
app.get('/user/dashboard', function (req, res) {
console.log(req.headers)
if (!req.session.user) {
return res.status(400).send({
data:'need to be logged in'
});
}
return res.status(200).send({
data:req.session.user
});
});