Вход в Django redirect_field_name 'next' вызывает новый сеанс - PullRequest
0 голосов
/ 21 ноября 2018

Я создаю веб-сайт электронной коммерции, позволяю гостевым пользователям добавлять товары в свои корзины, сохраняя cart_id в сеансе, и когда они переходят к оформлению заказа, я перенаправляю их для входа в систему следующим образом в представлении оформления заказа

if not request.user.is_authenticated:
    login_url = reverse('accounts:login')
    check_out_url = reverse('cart:checkout')
    redirect_url = "{}?next={}".format(login_url, check_out_url)
    return redirect(redirect_url)
# checkout process here

Работает, однако cart_id больше не находится в сеансе.Если я не использую следующий параметр и просто перенаправляю на login_url, cart_id остается в сеансе.

PS: То же самое происходит с login_required_decorator

Есть ли способсохранить данные сессии нетронутыми?

1 Ответ

0 голосов
/ 21 ноября 2018

Нам понадобится больше информации, чтобы знать наверняка, но вот лучшее предположение, основанное на опыте:

Вы уверены, что редирект переносит вас в тот же домен, в терминах cookie?

например, если вы аутентифицированы на foo.somedomain.com и next ссылки www.somedomain.com, тогда Django (по умолчанию) захочет использовать отдельные куки для этих двух отдельных доменов.

Чтобы сделатьDjango использует куки-файл во всех поддоменах для данного домена, вам нужно установить settings.SESSION_COOKIE_DOMAIN ( docs ) только для домена.например, somedomain.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...