2014-10-27 35 views
0

所以我有一個Django應用程序,作爲我編寫的另一個應用程序的後端。我只希望我的Django應用程序可以從其他應用程序訪問,這可能會有少數幾個版本(生產,分期,dev1,dev2)。我怎樣才能配置我的Django應用程序只接受這些少數客戶的連接?如何將我的應用程序配置爲只接受來自三個明確指定的客戶端的連接?

+0

你可以提供一些關於Django應用程序會從另一個應用程序接收連接?他們是HTTP帖子還是類似的東西? – baxeico 2014-10-27 16:42:30

+0

是的,只需一個REST API - 帶有令牌認證的GET,POST,PUT,DELETE。 – jononomo 2014-10-27 16:46:40

+0

你可以用這樣的Apache來做到這一點:http://stackoverflow.com/questions/18145978/only-allow-certain-ip-addresses-to-access-site-with-mod-rewrite – 2014-10-27 18:51:19

回答

2

如果我理解你很好,你想控制對Django應用程序的訪問,一個選擇是添加一個自定義中間件來檢查用戶的IP,如果不允許,你可以顯示錯誤或重定向到其他網站或任何你想要的。

class CheckIPMiddleware(object): 
    # Check if client IP is allowed 
    def process_request(self, request): 
     allowed_ips = ['192.168.1.1', '123.123.123.123', etc...] 
     ip = request.META.get('REMOTE_ADDR') # Get client IP 
     if ip not in allowed_ips: 
      # Here you can raise a 403 Forbidden 
      # or redirect to any other site/page 

     # If user is allowed nothing happens 
     return None 

如果這是對你有用,你要記住兩兩件事:

  • 將代碼添加到文件中以下路徑:your_project/middleware/checkipmiddleware.py
  • 編輯您的設定,並加入your_project_name.middleware.checkipmiddleware.CheckIPMiddleware到您的中間件(在你的settings.py中尋找MIDDLEWARE_CLASSES = (...
相關問題