2013-02-10 11 views
0

我正在嘗試爲網頁實現以下方案。如果用戶5秒鐘不活動,則註銷用戶。我有request.session ['islogin'],我想在用戶閒置5秒後重新將此會話密鑰分配給False。我嘗試過使用裝飾器,但是在幾個代碼之後,我還沒有弄清楚下一步應該寫什麼,這樣我的代碼就會檢測到非活動用戶。因此,我有問題,「我怎麼能檢測用戶處於非活動狀態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

我需要/添加一些設置來設置文件 – mavzey 2013-02-10 07:57:23

+0

是的,我只是更新我的代碼 – catherine 2013-02-10 07:59:07

相關問題