在 couchdb 中,如果数据库是安全的,它会根据“authentication_redirect”配置设置重定向到“/_utils/session.html”。
如果我有几个数据库,如 db1、db2 等,我想要的是 couchdb 重定向到 /db1/logon.html 用于 db1 和 /db2/logon.html 用于 db2 等。
是否可以根据正在访问的数据库将 couchdb 重定向到特定的登录文件?
在 couchdb 中,如果数据库是安全的,它会根据“authentication_redirect”配置设置重定向到“/_utils/session.html”。
如果我有几个数据库,如 db1、db2 等,我想要的是 couchdb 重定向到 /db1/logon.html 用于 db1 和 /db2/logon.html 用于 db2 等。
是否可以根据正在访问的数据库将 couchdb 重定向到特定的登录文件?
您可以传递一个 ?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."}
我能想到的唯一方法是使用如下重写:
{from: '/db1/*', to: '../../../db1/*'},
{from: '/db2/*', to: '../../../db2/*'}
在您的主数据库上,将其称为主要从 localhost:5984 提供服务。
需要的配置在蒲团中如下
httpd secure_rewrites false
vhosts localhost:5984 /main/_design/edit/_rewrite
唯一的问题是您必须关闭secure_rewrites,这可能会破坏您的安全性。
这是未经测试的,但应该非常接近。