CouchDB Fauxton 登录无法在 DigitalOcean Docker APP 上运行

问题描述 投票:0回答:3

我已经部署了普通的 CouchDB Docker 容器,在 DigitalOcean 的 App Platform 上标记“最新”。

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

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

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

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

我想念什么?

更新

再次检查网络选项卡,还有更多事情发生:

  • POST到
    _session
    ,结果如上
  • 获取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"
  }
}
docker couchdb digital-ocean
3个回答
1
投票

看起来会话 cookie 已经被吃掉了。

在您的第一个 POST 到 _SESSION 中,您可以检查您收到的响应标头以及它是否包含会话 cookie 吗?


0
投票

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


0
投票

这对我有帮助:

  • 在主机上的
    local.ini
    中创建
    /home/couchdb/etc
    文件(请参阅下面的示例)
  • 通过将
    -v ~/couchdb/etc:/opt/couchdb/etc/local.d
    添加到
    docker run
    命令来启动容器(请参阅下面的示例)

local.ini 内容

admin
是您的管理员用户名
adminpassword
是你的密码(启动容器时会被Couch DB加密)

[chttpd]
authentication_handlers = {chttpd_auth, cookie_authentication_handler}, {chttpd_auth, default_authentication_handler}

[admins]
admin = adminpassword

docker 运行示例(MacOS)

docker run -d -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=PASSWORD -v ~/couchdb/etc:/opt/couchdb/etc/local.d --name couchdb couchdb:3.3.3
© www.soinside.com 2019 - 2024. All rights reserved.