Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法使用PockDB获得cookie身份验证_Node.js_Nosql_Pouchdb - Fatal编程技术网

Node.js 无法使用PockDB获得cookie身份验证

Node.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;最大年龄=

我在客户端工作时遇到问题。我已经浏览了其他几个堆栈溢出帖子,但我仍然没有找到答案。我也研究过PockDB身份验证,但它似乎不是我想要的

下面是我的Express后端

我首先从用户那里获取密码并验证它,然后向/\u会话发出post请求以获取令牌。然后我将一个字符串返回给客户机。字符串如下所示:

AuthSession=DGVZDDO1RTDMDLFNDOCQN-ogpyksRGBXe7x7DVinw075A;版本=1; Expires=周二,2020年2月18日16:09:32 GMT;最大年龄=600岁;路径=/;HttpOnly

在本地主机的POST路由中:8080/session

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}}}