Сессия Django не работает в режиме инкогнито в Chrome
У меня есть 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 обратного вызова из этой трехсторонней аутентификации. Однако сессия не работает в режиме инкогнито в хроме. Я не вижу никакой сессии в консоли браузера, и я не могу правильно получить редирект. Но я вижу, что сессия правильно сохраняется в базе данных. Это потому, что режим инкогнито блокирует сессию после перенаправления на сторонний сайт или что-то еще?
В режиме инкогнито он блокирует third-party
куки, если ваш поток аутентификации опирается на cookies
, которые считаются «сторонними», то есть - (куки, установленные доменами, отличными от вашего собственного, во время процесса аутентификации), эти куки могут быть заблокированы. Это может привести к тому, что сессия не будет распознана после обратного перенаправления от стороннего провайдера аутентификации.