`
hanyh
  • 浏览: 230001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据链接判断用户是否登录,没有则转到首页的django middleware

阅读更多
要求:“/operate”为受限制区域,要求必须登录;登录后若长时间不用,则自动logout
实现:django middleware非常适合这个要求,和java的filter差不多
from django.conf import settings
from django.contrib import auth
from datetime import datetime, timedelta
from django.http import HttpResponse,HttpResponseRedirect
class AutoLogout:
  def process_request(self, request):
    if request.path.startswith("/operate"):
#        print '***********************************************'
        if  not request.user.is_authenticated() :
            auth.logout(request)
            return HttpResponseRedirect("/")
    if not request.user.is_authenticated() :
      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()



分享到:
评论
7 楼 skysbird 2008-11-20  
gonefish 写道

既然要登陆,怎么不用login_required啊

因为他要对于全部的view,而不是某个某几个,这样做代码高校些。
6 楼 gonefish 2008-11-03  
既然要登陆,怎么不用login_required啊
5 楼 xunSir.lee 2008-11-02  
hama 写道
我用的是基于数据库的session,怎么做到关闭浏览器后,session就失效?

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
4 楼 duka 2008-06-25  
建议
if request.path.startswith("/operate"):
改写成
if request.path.startswith("/operate/"):
3 楼 hama 2008-06-11  
我用的是基于数据库的session,怎么做到关闭浏览器后,session就失效?
2 楼 hellas 2008-04-29  
可以在setting里面设置SESSION_COOKIE_AGE(单位:秒),缺省是两个星期。
1 楼 andrewleung 2008-04-28  
在Java里的web.xml设置
<session-config>
        <session-timeout>30</session-timeout>
</session-config>
超过这个时间就需要重新登录,不知道Django里面有没有类似的设置啊
而不是写代码来判断

相关推荐

Global site tag (gtag.js) - Google Analytics