Node.js 无法使用PockDB获得cookie身份验证
我在客户端工作时遇到问题。我已经浏览了其他几个堆栈溢出帖子,但我仍然没有找到答案。我也研究过PockDB身份验证,但它似乎不是我想要的 下面是我的Express后端 我首先从用户那里获取密码并验证它,然后向/\u会话发出post请求以获取令牌。然后我将一个字符串返回给客户机。字符串如下所示: AuthSession=DGVZDDO1RTDMDLFNDOCQN-ogpyksRGBXe7x7DVinw075A;版本=1; Expires=周二,2020年2月18日16:09:32 GMT;最大年龄=600岁;路径=/;HttpOnly 在本地主机的POST路由中:8080/sessionNode.js 无法使用PockDB获得cookie身份验证,node.js,nosql,pouchdb,Node.js,Nosql,Pouchdb,我在客户端工作时遇到问题。我已经浏览了其他几个堆栈溢出帖子,但我仍然没有找到答案。我也研究过PockDB身份验证,但它似乎不是我想要的 下面是我的Express后端 我首先从用户那里获取密码并验证它,然后向/\u会话发出post请求以获取令牌。然后我将一个字符串返回给客户机。字符串如下所示: AuthSession=DGVZDDO1RTDMDLFNDOCQN-ogpyksRGBXe7x7DVinw075A;版本=1; Expires=周二,2020年2月18日16:09:32 GMT;最大年龄=
bcrypt.compare(req.body.password, users[0].password, function (error, result) {
if (error) { res.status(400).json({ error }); }
if (result === true) {
// return a cookie auth token from couchdb
axios.post('http://localhost:5984/_session', {
name: req.body.username,
password: users[0].password
}).then((response) => {
const cToken = response.headers['set-cookie'][0];
return res.json(cToken); // send auth token back to client
}).catch((err) => {
return res.status(400).json(err);
});
});
};
但是,客户端似乎没有意识到我得到了一个cookie令牌,我得到了以下错误:
{错误:“未经授权”,原因:“您无权访问此文件。”
db“,名称:“未经授权”,状态:401,消息:“您不是
已授权访问此数据库。“}
这是我的客户端代码:
axios.post('http://localhost:8080/session/', { username: this.form.username, password: this.form.password }).then((res) => {
console.log(res.data);
const db = new PouchDB('http://localhost:5984/somedb', { headers: { Cookie: res.data } });
db.info().then((info) => {
db.put({
_id: 'mydoc',
title: 'test'
}).then((response) => {
// handle response
}).catch((err) => {
console.log(err);
});
});
}).catch((error) => {
console.log(error);
});
是因为我没有得到标题/没有设置cookie吗?当我创建PockDB实例时,我可以不传递字符串吗
任何帮助或指导都将不胜感激。提前感谢。中间代码正在获取
AuthSession
cookie,但是Set cookie
头在响应中的位置/方式是什么?发布客户端收到的实际HTTP响应头会很有帮助。感谢您的评论!我能弄明白。我所要做的就是将``{headers:{Cookie:res.data}}``更改为{ajax:{headers:{Cookie:res.data}}}