python,django做中間件屏蔽非法訪問


我使用django1.6.

django框架沒有urlfilter這樣的原生中間件,但是靈活的django設計者為我們留下了更自由的渠道。

在沒有使用django以前,我沒有接觸過如此瀟灑的編程方式,中間件就是MIDDLEWARE_CLASSES,這個配置在你的settings文件中,當然所有的中間件,包括django的session,cookie中間件,CsrfViewMiddleware中間件,她們都是人家設計大媽為我們寫好了類,我們只需要配置一下settings,run server一下就成功駐軍我們web應用了。

  如果自己不寫一次中間件,怎么會了解設計者,django是怎么運行的呢???

 

廢話不說了。

 

新建一個應用,叫management,然和在此應用下,自己新建一個文件叫:statisti_user_activity.py

 

中間件的秘密在於 繼承和重寫方法,然和配置。

 

三步驟:1創建類

class RqsStatistcsMiddleware(object):
  def process_request(self,request):重寫方法

 

然后去settings下配置你這個類。在MIDDLEWARE_CLASSES里寫上你的類的應用+類名即可。如我們這個: management.statisti_uset_activity.RqsStatistcsMiddleware

 runserver 看看吧。記住MIDDLEWARE_CLASSES的順序是按照你的配置先后順序的哦。

 

中間件的作用:

    我平生最恨那些只講原理不講試用場景的人,哈哈,做人嘛要給被人一些功夫的適用場景。

    一句話行如中間件作用:你最想在別人訪問你的程序前作些什么,那么它可以幫你實現。

    場景一:你要查看所有request是否是你指定的ip訪問:那ok咯

    def process_request(self,request):

    if request.META.has_key('HTTP_X_FORWARDED_FOR'):

      if request.META['HTTP_X_FORWARDED_FOR'] ! = '你想要的妹子的ip':

        return HttpResponseForbidden('<h1 style="text-align:center;margin-top:20px;">不好意思,你不是我們蒙娜麗莎!</h1>')

    else:

      return HttpResponseForbidden('<h1 style="text-align:center;margin-top:20px;">不好意思,你不是我們蒙娜麗莎!</h1>')

    可以指定訪問,當然可以禁止某些訪問了。

場景二:

  檢查用戶訪問的行為:比如某些url,是網站權限url,需要驗證口令,驗證是否付費等等。

場景三:

     統計用戶訪問:以后做定點推送准備

場景四:

    統計非法訪問,適用新進程計時器,或者redis等發現異常訪問次數,做相應操作

總之太多太多,,,還是那句話:你最想在別人訪問你的程序前作些什么,那么它可以幫你實現。

 

哈哈:我是老銀,喜歡的大家一起學習,一起討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM