天天看點

django server之間通過remote user 互相調用

首先,場景是這樣的:存在兩個django web應用,并且兩個應用存在一定的聯系。某些情況下彼此需要擷取對方的資料。

但是我們的應用肯經都會有對應的鑒權機制。不會讓人家随随便便就通路的對吧。好比上車要刷卡(滴,老人卡~~~)。我們知道在浏覽器使用者登陸後,每次請求都會對應的session,server可以根據對用的session判斷使用者的權限資訊。但是我們不容易在server端使用,可能存在session失效時間等問題。

是以動手檢視django官方文檔,發現django提供remote user機制,可以支援server之間的遠端調用。隻需要在setting中添加如下設定:

滿心歡喜測試了一下,發現還是不行~~~(我就知道沒這麼簡單)

還差一步,在setting添加一行,在環境變量中添加REMOTE_USER的使用者名,注意jerry是系統中已經存在的一個使用者

完成,這樣在請求中沒有session資訊,或通過session判斷使用者沒有登陸時,就會自動使用上面的REMOTE_USER使用者登入。這樣我們就有了一個公用的上車卡,但是為了安全我們可能需要給這個使用者設定一些權限限制。(這樣就算上了車,也隻能沒有作為隻能站着,哈哈)

但是這樣也可能帶來一些問題,比如我們在其他接口中判斷目前使用者是否登入,如果沒有就從定向到登入界面。但是采用REMOTE_USER後,會自動登入也就無法定向到登入頁面。這就需要我們重新設計使用者登入的邏輯。

強行開車,如有錯誤或好的見解歡迎指正。這裡是老瘦家的兒子,如需轉載請聲明,我替老瘦感謝你。