javascript - 会话未存储在浏览器 cookie 中
问题描述
当我尝试在邮递员中运行我的 API 时,它工作正常并且会话得到维护。但是当我试图从 UI 部分运行它时,登录会话不起作用。
这是我登录的登录 API
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 时发送用户 req.session.user 的会话 API
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} )
和
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
});
});
检查cookie是否真的存在以及用户对象在哪里。
您可以检查您的浏览器开发控制台以查看 cookie 是否正在更新。
我看到这是获取请求,您在标头中放置了一个 cookie。但比在 API 中您要在 req.session.user 上寻找用户。虽然 cookie 在 req.header["Cookie"] 中。
推荐阅读
- rest - OAuth2.0 身份验证服务器和 IAM
- php - MySQL 在查询中没有正确使用 PHP 变量,用字符串/整数替换变量可以正常工作
- python - MNIST 上的迁移学习:错误标签错误
- php - php 用 is.gd api 缩短字符串中的所有 url 并将它们链接起来
- regex - Dart 与某些全角字符的正则表达式不匹配
- python - python yaml load_all 获取错误的密钥
- javascript - 是否有使用 highcharts 或任何其他库在 Web 应用程序中绘制 3D 多时间线序列的解决方案
- delphi - 导入语音组件后,在调色板中找不到
- ios - Metal Shader 顶点属性 - 无法将属性从 MTLAttributeFormatUInt 转换为 float1
- delphi - 在列表框中列出文件,如 Delphi 中的 Windows 资源管理器