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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...