CouchDB 无法为_session验证用户

x9ybnkn6  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(206)

我遇到了一个非常奇怪的问题,我不能使用数据库中的任何用户(_users)通过路由(/_session)创建会话。它总是给我错误(错误的凭证)。它曾经在couchdb 1.6.1中工作得很好
对于普通的couchdb管理员,它可以正常工作:
$ curl -X POST http://localhost:5984/_session -d 'name=my_main_admin&password=******'
{“确定”:真,“名称”:“我的主管理员”,“角色”:[“管理员”]}
但是对于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"}'
{“确定”:真,“标识”:“组织.考级数据库.用户:我的新用户”,“版本”:“1-f1 fa 0870666 d17 d 7324 e54128 dfbcacb”}
然后,如果我尝试使用此用户创建会话,它永远不会工作:
$ curl -X POST http://localhost:5984/_session -d 'name=my_new_user&password=my_new_user'{“错误”:“未授权”,“原因”:“名称或密码不正确。"}
我的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后,它就再也没有工作过。我在文档中找不到任何相关信息。我是否遗漏了什么?

euoag5mw

euoag5mw1#

问题是您是通过_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端点以新用户身份登录。

相关问题