小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Django中間件----登錄攔截器

 java_laq小館 2014-01-27

繼續(xù)上篇關(guān)于Django的日志,探索Django的其他方面。

首先想到的是Django里面有沒(méi)有類似filter的組件。遺憾的是,并未發(fā)現(xiàn)Django中有類似過(guò)濾器或者攔截器的概念。然而,Django提供了功能或許更為強(qiáng)大(至少是不弱于)這些概念的新東西:middleware。

設(shè)想這樣的需求:在用戶未登錄之前,他訪問(wèn)任何頁(yè)面,都將轉(zhuǎn)入登錄頁(yè)面,要求其登錄。這樣的判斷最適合放在頁(yè)面邏輯的前端,而不是在頁(yè)面邏輯中實(shí)現(xiàn)。

我們寫(xiě)這樣的一個(gè)middleware,它攔截所有訪問(wèn)非login頁(yè)面的請(qǐng)求,檢測(cè)其cookie,并判斷將請(qǐng)求轉(zhuǎn)向login頁(yè)面或者其請(qǐng)求的頁(yè)面。

middleware代碼如下:

 

Python代碼  收藏代碼
  1. ''''' 
  2. Created on 2009-4-9 
  3.  
  4. @author: Administrator 
  5. '''  
  6. from django.http import HttpResponseRedirect   
  7. from django.contrib.auth import SESSION_KEY   
  8. from urllib import quote   
  9. class QtsAuthenticationMiddleware(object):   
  10.     def process_request(self, request):  
  11.         #print request.path   
  12.         if request.path != '/login/':   
  13.             if "favorite_color1" in request.COOKIES:  
  14.                 pass  
  15.             else:  
  16.                 return HttpResponseRedirect("http://")  

 

 

 

settings.py中配置此middleware

 

Python代碼  收藏代碼
  1. MIDDLEWARE_CLASSES = (  
  2.     'django.middleware.common.CommonMiddleware',  
  3.     'django.contrib.sessions.middleware.SessionMiddleware',  
  4.     'django.contrib.auth.middleware.AuthenticationMiddleware',  
  5.     'middleware.QtsAuthenticationMiddleware',  
  6. )  

 

 

 

當(dāng)用戶第一次請(qǐng)求musician_list,會(huì)轉(zhuǎn)向兩全其美。

只有用戶訪問(wèn)過(guò)login,設(shè)置了cookie,再訪問(wèn)musician_list,才能成功。

  • src.rar (3.7 KB)
  • 下載次數(shù): 36
分享到:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多