我有两个Dash(开放源码)的应用程序是用Python语言编写的.在这两个应用程序中,我都使用Flask-Login 来处理常见的身份验证任务,比如登录、注销以及通过签名的Cookie记住用户的会话.换句话说,每个应用程序都有自己的登录页面,如果成功登录,该页面会将用户重定向到应用程序的主页.相反,每当用户决定注销时,用户都会被重定向到登录页面.
我期望已经成功登录到应用程序1(app1
)的用户将不需要再次登录到应用程序2(app2
),因为活动用户的ID被存储在Flask 会话中(提供了跨应用程序的公共密钥).事实上,当在本地部署时,它的工作效果与预期一致:
dash_app1.py个个
if __name__ == "__main__":
app1.run(host="172.xx.xxx.x", port=8050, debug=True)
dash_app2.py个个
if __name__ == "__main__":
app2.run(host="172.xx.xxx.x", port=8051, debug=True)
然而,当我将我的两个应用程序部署到运行在同一个Google App Engine(标准环境)上的两个服务上时,我无法重现这一点,即我需要分别登录app1
和app2
,这是不受欢迎的.
由于app1
部署在https://PROJECT_ID.REGION_ID.r.appspot.com上(默认服务),app2
部署在https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com上(第二个服务),我本以为按如下方式配置FlaskTM应用程序会起作用(按照documentation):
dash_app1.py个个
app1 = dash.Dash(...)
server = app1.server
server.config.update(
SECRET_KEY=SECRET_KEY,
SESSION_COOKIE_DOMAIN=".r.appspot.com"
)
dash_app2.py个个
# Same as above but for app2.
但是,包含活动用户的Cookie不会在Web浏览器上保留.
我也try 过修改其他的Flask 配置值,但都没有解决我的问题.
如有任何帮助,将不胜感激!