2016-08-19 4 views
1

Django: Cookie set to expire in 30 seconds is actually expiring in 30 minutes? делаетДжанго, установка печенья

hr = HttpResponse('ok') 
hr.set_cookie('user_id', user_id, max_age=30) 

в то время как https://stackoverflow.com/a/25179642/433570 делает

request.session[user_id] = True 

И оба говорит, что мы устанавливаем cookie.

В чем разница между этими двумя?
Могу ли я установить истечение с помощью метода request.session?

ответ

1

Короче говоря, файлы cookie предназначены для хранения на стороне клиента, в то время как сеансы хранятся на стороне сервера (если вы не используете cookie based session).

Пользователи могут очистить куки HTTP из своих браузеров, но они не могут ничего о сессий на сервере делать. Clearing sessions - это вы и ваши настройки. Есть django settings, которые вы можете использовать для определения их возраста, такого как SESSION_COOKIE_AGE. Для http cookie можно установить attributes, например max_age, expires.

Выбор того, какой из них использовать, зависит от ваших требований; вы собираетесь хранить конфиденциальные данные, является неизменность важным и т.д.

Ссылки:

+0

Спасибо, один вопрос хотя, даже хотя пользователь не может редактировать сеансы на моем сервере, он может удалить ключ сеанса, который указывает на данные сеанса сервера в его cookie-браузере? Это верно? – eugene

+1

Да, пользователь все еще может очистить куки-файлы браузера, но не может манипулировать значениями, если они хранятся в сеансе на стороне сервера. –

Смежные вопросы