自动注销后在Django
问题描述:
我需要注销一些特定时间之后的使用者特定时间用户(允许将其作为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分钟的用户?
您是否在'尝试'区块中遇到任何异常? –
你可以把一些日志记录,看看你是否得到了尝试,里面的if等 –
实际上它没有进入process_request方法似乎,因为我已经使用了一些打印语句,但无法看到然后在终端输出 –