如何解决Flask-Login / Flask-Session-来自外部站点的链接
在使用Flask,Flask登录和Flask-Session时,我遇到了以下问题:
单击外部站点(跨域)上的链接(该链接链接到受@login_required
保护的路由时),烧瓶登录_load_user
功能无法检索用户信息(因为没有Cookie随跨域请求一起发送)。 (不使用装饰器,current_user.is_authenticated
似乎是False
。)
(来自flask_login.login_manager.py
)
if user is None:
config = current_app.config
cookie_name = config.get('REMEMBER_COOKIE_NAME',COOKIE_NAME)
header_name = config.get('AUTH_HEADER_NAME',AUTH_HEADER_NAME)
has_cookie = (cookie_name in request.cookies and
session.get('_remember') != 'clear')
if has_cookie:
cookie = request.cookies[cookie_name]
user = self._load_user_from_remember_cookie(cookie)
elif self._request_callback:
user = self._load_user_from_request(request)
elif header_name in request.headers:
header = request.headers[header_name]
user = self._load_user_from_header(header)
如果使用了装饰器,则请求将被重定向到/?next=/protectedView
。如果仅使用current_user.is_authenticated
,将得到False
。
每次单击刷新时,都会重新创建并覆盖会话cookie。但是,如果我单击URL栏并按Enter,则用户加载程序无需创建新会话就可以访问Remember_cookie并加载用户数据。
在从另一个域内输入受保护的路由时,是否有任何简单方便的方式允许加载用户数据?
更新:我发现将REMEMBER_COOKIE_SECURE
设置为None
而不是Strict
会导致烧瓶登录来登录用户。现在,链接将重定向到正确的页面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。