1

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

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

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

4

2 回答 2

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."}
于 2013-03-08T17:52:25.467 回答
1

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

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

在您的主数据库上,将其称为主要从 localhost:5984 提供服务。

需要的配置在蒲团中如下

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

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

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

于 2013-03-08T17:02:22.937 回答