Различные настройки SESSION_COOKIE_AGE для разных пользователей

Я выполняю тайм-аут сеанса в django со следующими настройками:

SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_AGE = 600

очень просто, я ищу способ изменить возраст файла cookie сеанса для группы пользователей. Например, я хочу, чтобы тайм-аут обычного пользователя был намного быстрее, чем у сотрудника или даже у администратора. Есть ли простой способ изменить возраст файла cookie сеанса на лету, с помощью промежуточного программного обеспечения или в поле зрения? Есть ли способ избежать написания нового управления сеансом?


person Jacek    schedule 03.01.2019    source источник


Ответы (1)


Вот что я сделал в своем проекте: я использовал сигнал user_logged_in в моем admin.py и установил оттуда SESSION_COOKIE_AGE. Я не уверен, что это хороший подход, но он работает.

from django.contrib.auth.signals import user_logged_in

def login_hook(sender, **kwargs):
    settings.SESSION_COOKIE_AGE = settings.SESSION_COOKIE_AGE_ADMIN

user_logged_in.connect(login_hook)

вы также можете попробовать функцию session.set_expiry, если это применимо.

person Lex Bryan    schedule 14.02.2019
comment
это правильный ответ для обычных пользователей, но я могу обновить свои файлы cookie как немного более образованный пользователь. Вы знаете способ справиться с этим сценарием? Я подумал, что могу добавить пользовательское значение в сеанс и написать собственное промежуточное программное обеспечение для проверки этой переменной вместо зависимости от файла cookie. Что вы думаете, ребята? - person morkun; 09.02.2021