我正試圖在Django和PostgreSQL中實現一個多租戶應用程序,併爲每個租戶單獨(但相同)的架構。身份驗證將無法在除公衆之外的架構上工作
我選擇與租戶架構:
cursor.execute('SET search_path TO ' + schemas)
而且我有一個選擇使用基於主機名,其模式的中間件,所以它的工作是這樣的:
foo.mysite.com --> use schema 'client_moo'
bar.mysite.com --> use schema 'client_bar'
這原則上,這是簡單的情況下(簡單的數據庫查找)
但是,當我嘗試登錄時,事情開始崩潰。每個租戶應該有它自己的單獨登錄pa ge,因此foo.mysite.com
將與bar.mysite.com
不同,它與mysite.com
不同。
但是,試圖從子域名登錄到管理應用程序會導致重定向回登錄頁面。
這裏是發生了什麼:
mysite.com
原木精細(架構:public
)的foo.mysite.comn
,而不是登錄會重定向(HTTP 302)回本身(foo.mysite.com
)(模式:client_foo
)
強制模式永遠是client_foo
將導致我mysite.com
工作(即登錄在client_foo
模式),但foo.mysite.com
仍然無法工作。
刪除模式的選擇完全(所以它總是在public
模式)可以讓兩個網址登錄罰款。
「*試圖從子域名登錄到管理應用程序導致重定向回登錄頁面*」:這聽起來不像PostgreSQL問題。 PostgreSQL不會「重定向」 –