Django остается подписанным в течение двух недель или до закрытия браузера - PullRequest
0 голосов
/ 20 мая 2019

У меня есть поле 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())

Интересно, это хорошее и безопасное решение?

1 Ответ

0 голосов
/ 20 мая 2019

также вы можете сделать это:

    from django.conf import settings

    if form_data.cleaned_data['stay_signed'] == True:
       settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = False
    else:
       settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = True

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