论坛首页 编程语言技术论坛

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

浏览 5265 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-07  
要求:“/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()



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

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
0 请登录后投票
   发表时间:2008-11-03  
既然要登陆,怎么不用login_required啊
0 请登录后投票
   发表时间:2008-11-20  
gonefish 写道

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

因为他要对于全部的view,而不是某个某几个,这样做代码高校些。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics