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 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章