2015-07-28 135 views
1

我需要註銷一些特定時間之後的使用者特定時間用戶(允許將其作爲1分鐘現在),因此創建了一箇中間件類,如下自動註銷後在Django

的myproject/middleware.py

from datetime import datetime, timedelta 
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() 

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'myproject.middleware.HttpErrorHandler', 
    'myproject.middleware.AutoLogout' 
) 
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' 
AUTO_LOGOUT_DELAY = 1 

Djagno版本是1.4.12

但上面的代碼是不工作,我不知道我在那裏做錯了,所以有人可以讓我知道爲什麼上面的代碼不工作,以及如何退出每1分鐘或5分鐘的用戶?

+0

您是否在'嘗試'區塊中遇到任何異常? –

+0

你可以把一些日誌記錄,看看你是否得到了嘗試,裏面的if等 –

+0

實際上它沒有進入process_request方法似乎,因爲我已經使用了一些打印語句,但無法看到然後在終端輸出 –

回答