2013-02-10 1 views
0

Я пытаюсь реализовать следующий сценарий для веб-страницы. Если пользователь неактивен через 5 секунд, выйдите из системы. У меня есть request.session ['islogin'], я хочу повторно использовать этот сеансовый ключ для False после того, как пользователь неактивен в течение 5 секунд. Я пытался использовать декораторы, но после нескольких кодов я не понял, что должен написать дальше, чтобы мой код обнаруживал неактивных пользователей. Поэтому у меня вопрос: «Как я могу определить, пользователь неактивен в течение 5 секунд, чтобы назначить ключ сеанса, isLogin, к ложному?Как я могу обнаружить, что пользователь неактивен в течение 5 секунд, чтобы назначить ключ сеанса?

ответ

2

Вы можете сделать промежуточное программное обеспечение для этого

middleware.py

from datetime import datetime, timedelta 
from django.conf import settings 
from django.contrib import auth 

class AutoLogout: 
    def process_request(self, request): 
    if not request.user.is_authenticated() : 
     #Can't log out if not logged in 
     return 

    try: 
     if datetime.now() - request.session['last_touch'] > timedelta(0, settings.AUTO_LOGOUT_DELAY * 60, 0): 
     auth.logout(request) 
     del request.session['last_touch'] 
     return 
    except KeyError: 
     pass 

    request.session['last_touch'] = datetime.now() 

в настройках, добавьте это в ваших MIDDLEWARE_CLASSES:

MIDDLEWARE_CLASSES = [ 
    ................. 
    'app_name.middleware.AutoLogout', 
] 

and this: 

# Auto logout delay in minutes 
AUTO_LOGOUT_DELAY = 60 #this is equivalent for 1 hour 
+0

мне нужно/добавить некоторые настройки в файл настроек Do – mavzey

+0

Да, я просто обновляю свои коды – catherine

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