跨两个应用程序的相同Flask登录会话

时间:2019-10-14 17:41:20

标签: python session flask cookies flask-login

在两个不同的子域上运行的两个单独的Flask应用程序,但是登录会话在这些子域之间并不持久。

例如;登录a.example.co.uk将导致用户登录。但是,访问b.example.co.uk-用户将不会登录。

运行Apache,Flask(带有Flask-Login),Ubuntu 18,Python 3。

两个应用程序上的应用程序密码相同。尝试使用SERVER_NAME配置设置进行播放。

将Cookie正确设置为.example.co.uk

将Cookie配置为可在任何子域上使用。

SESSION_COOKIE_NAME="example",
SESSION_COOKIE_DOMAIN=".example.co.uk",
REMEMBER_COOKIE_DOMAIN=".example.co.uk",

登录到任何一个子域都意味着用户已登录到另一个。

2 个答案:

答案 0 :(得分:0)

还记得您关闭并返回a.example.co.uk时的情况吗?您需要在配置中将REMEMBER_COOKIE_SECURE设置为False或None,不记得了,但是我之前遇到过此问题,这就是解决问题的方法。检出Flask-Login Documentation

答案 1 :(得分:0)

设法解决了!

原来,我是在wsgi文件中设置Flask应用程序的秘密密钥,就像这样;

from App import app as application
application.secret_key = 'xxxxxxx'

这两个应用程序的wsgi文件中都有不同的秘密密钥!完全忘记了我在wsgi文件和主python文件中都设置了密钥。

从wsgi文件中删除秘密密钥设置解决了我的问题