我有以下問題: 我在Django寫了一個應用程序,基本上它是我的合唱團的某種管理平臺。現在我們有一些我們想要提供給我們會員的文件,但只有他們(即註冊用戶)。此外,還有一些文件只能由管理人員訪問。理想情況下,我希望能夠在數據庫中定義誰可以訪問哪些文件。對Django應用程序的Apache身份驗證
這裏是關於環境的一些信息:
- 服務器操作系統的Debian 8.7
- Python版本2.7
- Django的版本1.10
- mod_wsgi的4.3版本
我有什麼企圖至今?
Django documentation提供了一個非常非常小的如何對數據庫進行身份驗證的示例。
我只驗證用戶是否是有效用戶的部分有效。儘管它很糟糕,但用戶每次訪問文件時都必須重新登錄。
我驗證用戶是否爲組的部分完全不起作用。 Apache說:
Unknown Authz provider: group
然後我開始看這個問題,這導致我here。當我使用選項wsgi-group時,apache配置不會導致任何問題,但它顯然不驗證用戶是否在指定的組中。 (我試圖訪問與誰不是指定的組中,併成功用戶文件...)
現在,這裏有一些問題,我有這個問題:
- 有其他人遇到這些問題與需求組/需求wsgi-group選項,並找到了解決方案?
- 是否有可能將網站的會話與apache文件訪問的會話「鏈接」?正如我已經提到的,如果用戶每次訪問文件時都需要重新登錄,用戶界面不太友好。
- 是否有可能編寫自定義身份驗證功能?從技術上看,在authentication method check_password(此處爲「auth.wsgi」)的示例實現中,我可以覆蓋此函數,前提是變量包含用戶想要訪問的URL。 (是嗎?)
- 這可能是最動態的解決方案,但我不知道這是否可能。基本思想是,我在視圖中爲每個可下載文件呈現一個按鈕,並將POST發送到服務器。服務器檢查會話用戶是否有權訪問該文件,如果爲true,則返回文件。這意味着文件只能被應用程序訪問,而不能通過Apache訪問。這可能嗎?
我希望有人能幫幫我,謝謝你提前反正=)
編輯:我做了一些研究,發現了我在這裏的最後一個問題(Having Django serve downloadable files)的答案。有了mod_xsendfile,這顯然很容易管理。這隻剩下3個問題;)