Couchdb身份验证/授权

时间:2013-02-23 14:03:22

标签: couchdb

在couchdb中,如果数据库受到保护,它会根据“authentication_redirect”配置设置重定向到“/_utils/session.html”。

如果我有几个像db1,db2等数据库我想要的是couchdb重定向到db1&的/db1/logon.html /db2/logon.html用于db2等。

是否可以根据正在访问的数据库将couchdb重定向到特定的登录文件?

2 个答案:

答案 0 :(得分:7)

您可以传递?fail =参数。告诉couchdb在哪里发送未通过身份验证的用户。被褥像这样使用它;

成功的身份验证;

curl -sv 'localhost:5984/_session?next=/foo&fail=/bar' -d 'name=foo&password=bar'

< HTTP/1.1 302 Moved Temporarily
< Location: http://localhost:5984/foo
{"ok":true,"name":null,"roles":["_admin"]}

身份验证失败;

curl -Haccept:text/html -sv 'localhost:5984/_session?next=/foo&fail=/bar' -d 'name=foo&password=baz'
< HTTP/1.1 302 Moved Temporarily
< Location: http://localhost:5984/bar
{"error":"unauthorized","reason":"Name or password is incorrect."}

答案 1 :(得分:1)

我能想到的唯一方法就是使用重写:

{from: '/db1/*', to: '../../../db1/*'},
{from: '/db2/*', to: '../../../db2/*'}

在主数据库调用上,它主要从localhost:5984提供。

在蒲团中需要的配置如下

httpd secure_rewrites false
vhosts localhost:5984 /main/_design/edit/_rewrite

唯一的问题是你必须关闭secure_rewrites,这可能会破坏你的安全性。

这是未经测试的,但应该非常接近。