在我的couchapp正在使用两个数据库
1是对应用程序数据2“_users”数据库。
在我的应用程序在一个形式,我想实现自动完成的,其中数据源是“视图”中的“_users”数据库中创建的。
现在,当我登录比其他管理员普通用户ID。 在尝试访问内部“_users”数据库中的观点,我发现了错误403这就是:
{“错误”:“禁止”,“道理”:“只有管理员可以访问设计文件的行为进行系统的数据库。”}
是否有可能对我来说,允许,限制非管理员用户只视图的访问? 因此,我可以让用户从_users数据库列表到我的应用程序。
我从来没有能够做到这一点本身需要使用CouchDB很多定制的许多任务。 我总是需要一个脚本,在其他地方,让我说,我需要的信息。
什么工作对我来说是这样的设置:
- 有我的CouchDB的管理权限网守西纳特拉应用
- 使用CouchDB的配置来代理我的末日应用程序。
httpd_global_handlers
_my_service
{couch_httpd_proxy, handle_proxy_req, <<"http://127.0.0.1:9999">>}
究其原因,代理由于透过你的网守任何请求都将有AuthSession令牌集。 里面你把关,你可以GET
localhost:5984/_session
沿着通过AuthSession的cookie,它会告诉你是谁发出请求,让你看看他们,看看他们是否有机会,或者只是给任何你喜欢的任何人访问。 另一个原因是代理,以避免任何CORS废话,因为你正在做请求yourserver:5984/_my_service
。
更新
纯粹的客户端/ JavaScript的解决方案意味着,这将是从根本上不安全在某些时候,由于很好,一切都在客户端。 但是,也许你的应用程序,并不需要是安全的。 随你(由你决定。
一个解决办法可能是让你的应用程序作为一个预定义的管理员进行身份验证,然后创建更多的管理员用户的方式。 你可以一次当你的应用程序启动或认证需要的基础上。
“问题”是CouchDB的看到_users
数据库作为根本特别,不给你改变像其他数据库证书要求的机会。 通常情况下,你将能够使用_security
文件给基于角色或基于用户的访问。 但是,这是不可能的_users
。
另一种实现可能是跟踪自己的用户,放弃_users
完全数据库。 在这种情况下,你可以设置自己的饼干和具有不依赖于CouchDB的认证方案自己的登录和注销方法。 您可以查询自己的_view/users
,因为它会在你的主数据库。 事情就不会被锁定紧张,但他们会工作得很好,只要没有人感兴趣的是黑客入侵你的系统。 :)