У меня есть поле stay signed
в форме входа в мое приложение, и я хочу позволить пользователю решать, хочет ли он оставаться подписанным в течение 2 недель или выйти из системы после закрытия браузера.
Это часть кода, который я написал и использую, и он работает. Я просто проверяю, проверял ли пользователь подпись, а когда он этого не делал, я устанавливал время истечения сеанса равным 0. Я посмотрел на источник django SessionBase
, и кажется, что 0 равно истечению сеанса при закрытии браузера.
def form_valid(self, form):
if not form.cleaned_data['stay_signed']:
self.request.session.set_expiry(0)
login(self.request, form.get_user())
redirect_url = self.request.GET.get(REDIRECT_FIELD_NAME, None)
if redirect_url:
return HttpResponseRedirect(redirect_url)
return HttpResponseRedirect(self.get_success_url())
Интересно, это хорошее и безопасное решение?