2013-05-06 107 views
1

我知道,通過視圖和網址分派直接從django提供文件和圖片不是一種好方法,但如果通過服務器(Apache)提供這些文件和圖片,整個世界都可以看到他們。如果某些文件和圖片對於用戶是私密的,只有連接的用戶才能看到這些文件或圖片?在這種情況下,我需要由django自己來服務嗎?從Django提供媒體文件

回答

0

要提供私人文檔,您應該使用執行安全檢查的Python視圖。

這是example

0

如果您使用的是Apache與mod_wsgi的,那麼你可以使用mod_xsendfile

你基本上是尋找運行通過Django的一些資源的授權,通過一個頭回阿帕奇說,「嘿,夥計,減倉。這個用戶可以訪問這個'Apache'然後處理返回資源。

粗糙步驟(如,粗糙不夠,你需要使用我提供爲起點的鏈接,做一些更多的研究)

Apache需要知道哪些資源是公共的,哪些不是。在這兩種類型的媒體下創建一個子目錄(爲什麼不去crazxy並稱它們爲/ media/public /和/ media/private /)

爲公共目錄設置別名,爲受保護的目錄設置WSGIScriptAlias ,受保護的別名將指向你的主站處理器(可能django.wsgi)

添加設置虛擬主機: XSendFile On XSendFileAllowAbove On

添加URL配置到你的Django的應用程序,處理/媒體/保護/ {}什麼並通過您的身份驗證Django應用程序身份驗證邏輯路由它。這樣的一個例子是here

用於上述的有用的片段是here 和良好的措施here

另一示例