致电CouchDB的_session总是返回200

时间:2017-05-21 13:31:03

标签: authentication cookies couchdb

对CouchDB _session端点的调用是否总是似乎返回200 HTTP状态代码,即使我传递的cookie不存在或错误?

在我的GET请求标头中传递错误的Cookie或没有Cookie似乎总是返回:

{
  "ok": true,
  "userCtx": {
    "name": null,
    "roles": []
  },
  "info": {
    "authentication_db": "_users",
    "authentication_handlers": [
      "cookie",
      "default"
    ]
  }
}

传递正确的cookie时,我收到的回复略有不同:

{
  "ok": true,
  "userCtx": {
    "name": "jack",
    "roles": []
  },
  "info": {
    "authentication_db": "_users",
    "authentication_handlers": [
      "cookie",
      "default"
    ],
    "authenticated": "cookie"
  }
}

这是标准行为吗?如果是,我应该依赖哪个密钥来假设成功的身份验证?它应该是res.userCtx.name还是res.info.authenticated

1 个答案:

答案 0 :(得分:0)

这似乎是标准行为,尽管文档中没有明确说明。

但是,您可以通过在查询中设置basic=true来告诉CouchDB返回401响应:/_session?basic=true

它似乎表明它对基本身份验证很有用,但它也适用于经过cookie身份验证的用户。 (使用CouchDB 2.0.0测试)