在两个不同的子域上运行的两个单独的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",
登录到任何一个子域都意味着用户已登录到另一个。
答案 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文件中删除秘密密钥设置解决了我的问题