CouchDB Fauxton登录在DigitalOcean Docker应用程序上不起作用

zc0qhyus  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(164)

我已经部署了普通的CouchDB Docker container,在DigitalOcean的App Platform上标记“最新”。
我使用环境变量设置了admin用户,并成功地将数据库服务器连接到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"]}}

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

更新2

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

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

wn9m85ua1#

看起来会话cookie在某个地方被吃掉了。
在第一次POST到_SESSION时,是否可以检查得到什么响应头以及它是否包含会话cookie?

e4yzc0pl

e4yzc0pl2#

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

相关问题