我已经部署了普通的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"
}
}
2条答案
按热度按时间wn9m85ua1#
看起来会话cookie在某个地方被吃掉了。
在第一次POST到_SESSION时,是否可以检查得到什么响应头以及它是否包含会话cookie?
e4yzc0pl2#
事实证明,饼干是在DigitalOcean应用程序平台的内部某处被吃掉的。我重新部署了CouchDB Droplet,而不是应用程序,一切都按预期运行。这也解决了(尚未解决的)存储持久性需求。应用程序是表皮的,而Droplet通过附加的块存储保留数据(仍需备份)。