微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用户无法通过 _session 身份验证

如何解决用户无法通过 _session 身份验证

我面临一个非常奇怪的问题,我无法使用 (_users) 数据库中的任何用户通过路由 (/_session) 创建会话。它总是给我错误错误的凭据)。它曾经在 couchdb 1.6.1 中运行良好

对于普通的 couchdb 管理员来说,它工作正常:

$ curl -X POST http://localhost:5984/_session -d 'name=my_main_admin&password=******'
{"ok":true,"name":"my_main_admin","roles":["_admin"]}

但是对于 couchdb 用户(存储在 _users 中),它不起作用。我认为这与角色无关。

所以我首先创建用户

$ curl -s -H "Content-Type: application/json" -X PUT "http://my_main_admin:*****@127.0.0.1:5984/_node/_local/_users/org.couchdb.user:my_new_user" --data '{"name": "my_new_user","password": "my_new_user","roles": [],"type": "user"}'
{"ok":true,"id":"org.couchdb.user:my_new_user","re​​v":"1-f1fa0870666d17d7324e54128dfbcacb"}

然后,如果我尝试使用此用户创建会话,则它永远不会起作用:

$ curl -X POST http://localhost:5984/_session -d 'name=my_new_user&password=my_new_user' {"error":"unauthorized","re​​ason":"名称或密码不正确。"}

我的 CouchDB 配置看起来不错:

"couch_httpd_auth": {
"allow_persistent_cookies": "true","auth_cache_size": "50","authentication_db": "_users","authentication_redirect": "/_utils/session.html","iterations": "10","require_valid_user": "false"

我曾经在 couchdb 1.6.1 上与普通用户创建会话,但自从我安装了 couchdb 3.1.1 后它就再也没有工作过。我在文档中找不到任何相关信息。 我错过了什么吗?

解决方法

问题在于您是通过 _node/_local 接口创建用户的。应通过 _users 集群数据库上的集群 API 创建用户。

    $ curl -s -H "Content-Type: application/json" -X PUT \
  "http://my_main_admin:*****@127.0.0.1:5984/_users/org.couchdb.user:my_new_user" \
 --data '{"name": "my_new_user","password": "my_new_user","roles": [],"type": "user"}' \
    /

现在您应该可以使用 _session 端点以新用户身份登录。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。