CouchDB Fauxton 登录在 DigitalOcean Docker APP 上不起作用

Posted

技术标签:

【中文标题】CouchDB Fauxton 登录在 DigitalOcean Docker APP 上不起作用【英文标题】:CouchDB Fauxton login not working on DigitalOcean Docker APP 【发布时间】:2021-03-18 05:36:08 【问题描述】:

我已经部署了香草CouchDB Docker container,在 DigitalOcean 的App Platform 上标记“最新”。

我使用环境变量设置了管理员用户,并且我成功地能够在 https 端口 443 上卷曲到数据库服务器,而不是作为原始安装的 5984。然后我按照 docker 文档中的说明创建了系统数据库。

Fauxton UI 的初始加载工作(使用 _utils),但在 UI 级别登录失败。登录表单使用名称/密码提交表单,CouchDB 回复:


  "ok":true,
  "name":"couchadmin",
  "roles":[
             "_admin"
          ] 

出现“您已登录”的提示,设置了 AuthSession cookie,但 Fauxton 不允许我访问任何功能,只是再次重定向到登录页面。

我错过了什么?

更新

再次检查网络选项卡,还有更多内容:

POST 到_session,结果如上 GET tp _session,结果:
"ok":true,"userCtx":"name":null,"roles":[],"info":"authentication_handlers":["cookie","default"]

名称和角色为空/空。然后 GET 重复最后一次,结果相同

** 更新 2 **

当我查询_session?basic=true 时,我得到了正确的响应:


  ok: true,
  userCtx: 
    name: "couchadmin",
    roles: [
      "_admin",
      "user",
      "admin"
    ]
  ,
  info: 
    authentication_handlers: [
      "cookie",
      "default"
    ],
    authenticated: "cookie"
  

【问题讨论】:

【参考方案1】:

看起来会话 cookie 被吃掉了。

在您向 _SESSION 的第一次 POST 中,您能否检查您获得的响应标头以及它是否包含会话 cookie?

【讨论】:

是的,它会创建一个会话 cookie。 cookie 应该有什么名字? DigitalOcean 使用 CDN。也许他们把饼干弄乱了 __cfduid(我相信这是CND粘性会话),在发布后登录AuthSession。不存在的是一个名为 mujinaSpSessionId 的 cookie(我在当地的 Fauxton 上看到过) 已检查:POST 为 AuthSession(和 __cfuid)返回带有 set-cookie 的标头,两个 GET 请求都发送 AuthSession(但不是 __cfuid),并且只返回__cfuid 再次设置。 我用 DigitalOcean 打开了代码 #4597636,看看他们发现了什么 另外,您能否查看后续 GET 到 _session 的请求标头?【参考方案2】:

事实证明,cookie 在 DigitalOcean 应用程序平台的内部某处被吃掉。我重新部署了一个 CouchDB Droplet 而不是一个应用程序,一切都按预期工作。 这也解决了(尚未解决的)存储持久性的需求。应用程序是表皮的,而 Droplet 通过附加的块存储保留数据(仍需要备份)。

【讨论】:

以上是关于CouchDB Fauxton 登录在 DigitalOcean Docker APP 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

限制在 couchdb 中匿名删除文档

在 CouchDB 1.0 中创建用户时出错

CouchDB cookie 是不是有滑动到期时间?

如何使用 Jquery 和 CouchDb 创建 SIGN UP 和 LOG IN?

从 couchapp 自定义登录 couch.log?

如何使用 CouchDB 的 ui 在 hyperledger fabric 1.4 中停止 CouchDB 的更新?