我通过 Couchapp 部署了我的应用程序,这意味着整个应用程序是从数据库中提供服务的。我不希望 Couchdb 数据库中的数据公开可用,因此我指定了用户在向他提供数据之前必须具有的读者角色。然而,当我去申请时,我所能得到的是:
{"error":"unauthorized","reason":"You are not authorized to access this db."}
因为它甚至无法提供使用 jquery.couch.js 的登录页面。
关于如何提供应用内登录(即,为需要数据读取访问权限的用户不使用 Futon 登录)有什么想法吗?
这个时候,解决方案就需要做一些工作了。 (社区中存在改进这一点的压力,但我将解释当前的答案,而不是描述提案或蒸气软件。)
制作一个“欢迎垫”数据库,具有以下功能:
- 拥有管理员用户(“jtsnake”):
_security.admins = {"names":["jtsnake"], "roles":[]}
- 公开可读:
_security.readers = {"names":[], "roles":[]}}
-
有一个设计文档.validate_doc_update
功能。允许没有变化管理员除外:
function(newDoc, oldDoc, userCtx, secObj) {
// _design/welcome_mat .validate_doc_update
if(! userCtx.name)
throw {"unauthorized": "Please log in to change the welcome mat"};
if(userCtx.roles.indexOf("_admin") === -1)
throw {"forbidden": "Only the admin can change the welcome mat"};
log("Allowing welcome mat update by: " + userCtx.name);
}
最后,放置你的public此数据库中的欢迎屏幕、登录屏幕等内容。一旦用户登录,私有数据就可以进入私有数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)