Django 会话在 Chrome 隐身模式下不起作用

问题描述 投票:0回答:1

我有 3 个这样的观点:

def download_file(request, doc):
    if not request.session.get('is_authenticated'):
        return redirect(f"{reverse('pingfed_auth')}?next={request.get_full_path()}")
    return downloadfile(doc)

def pingfed_auth(request):
    original_url = request.GET.get('next') or 'home'
    request.session['original_url'] = original_url
    return redirect('Some third party authentication')

def redirect_pingfed_auth(request):
    if request.method == 'POST':
        request.session['is_authenticated'] = True
        request.session['username'] = get_username_from_saml(request.POST.get('SAMLResponse'))
        return redirect(request.session['original_url'] if 'original_url' in request.session else 'home') 

其中 pingfed_auth 启动身份验证,redirect_pingfed_auth 是来自第三方身份验证的回调 URL。但是,该会话在 Chrome 隐身模式下不起作用。我无法从浏览器控制台看到任何会话,并且无法正确重定向。但我确实看到会话已正确存储在数据库中。这是因为隐身模式在重定向到第三方网站或其他网站后会阻止会话吗?

django session incognito-mode
1个回答
0
投票

enter image description here

在隐身模式下,如果您的身份验证流程依赖于被视为“第三方”的

third-party
,即 -(在身份验证过程中由您自己以外的域设置的 cookie),它会阻止
cookies
cookie,这些 cookie 可能会被阻止。这可能会导致从第三方身份验证提供商重定向回来后会话无法被识别。

© www.soinside.com 2019 - 2024. All rights reserved.