【问题标题】:$.couch.session returns userctx with null name$.couch.session 返回带有空名称的 userctx
【发布时间】:2013-10-23 18:40:53
【问题描述】:

我正在调用以下代码:

$.couch.login($.extend({ name: "harry", password: "secrets"}, callback));
$.couch.session(callback);

“harry”只是我使用$.couch.signup 创建的一个虚拟用户,callback 是一个简单的对象,它指定成功/错误/完成函数,其主体如下:

success: function (data) {
    console.log('Success');
    console.log(data);
}

此代码返回以下内容:

Success
Object {ok: true, name: "harry", roles: Array[0]}

Success
Object {ok: true, userCtx: Object, info: Object}

第一个返回没问题,但是第二个,来自session 的那个,userCtx 对象基本上是空的,带有一个null 名称。

另外,当我尝试使用我的个人用户名和密码(我作为 Futon 管理员使用的用户名和密码)登录时,会返回:

Success
Object {ok: true, name: null, roles: Array[1]}
(0: "_admin")

Success
Object {ok: true, userCtx: Object, info: Object}

令人着迷的是,第一个请求似乎知道我是管理员,但没有获取任何其他数据,第二个请求与前面的示例执行相同的操作。

有什么想法吗?我没有正确使用$.couch.session 吗?我的沙发实例有问题吗?

仅供参考,我使用的是 1.4.0 版并从源代码构建。

【问题讨论】:

  • 我还发现从success 调用的success 方法运行$.couch.login 并没有在应该 时找到用户记录,但它当适当的 username:password@ 添加到 localhost 时,从 curl 中正确执行。我真的认为这个$.couch.session 在某种程度上搞砸了我。
  • 我必须做一些手动通过身份验证cookie的事情吗?在我看来,$.couch 库会处理这些问题。

标签: javascript jquery session couchdb restful-authentication


【解决方案1】:

事实证明,我真正需要的只是apache reverse proxy。 couch 实例无权访问AuthSession cookie,因为它来自端口5984。现在,将以下内容添加到我的apache2.conf(可能是httpd.conf,对于某些人来说)效果很好

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

ProxyPass /_couch http://localhost:5984 nocanon
ProxyPassReverse /_couch http://localhost:5984

【讨论】:

  • nginx 也同样有效。将所有内容都放在同一个域上也消除了我的许多麻烦。
猜你喜欢
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
相关资源
最近更新 更多