django server之間透過remote user互相呼叫方法

高洛峰
發布: 2017-03-27 16:47:17
原創
1834 人瀏覽過

首先,場景是這樣的:存在兩個django web應用,並且兩個應用存在一定的聯繫。某些情況下彼此需要取得對方的數據。

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

所以動手查看django官方文檔,發現django提供remote user機制,可以支援server之間的遠端呼叫。只需要在setting中加入以下設定:


MIDDLEWARE_CLASSES = (
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
)

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.RemoteUserBackend',
)
登入後複製

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

還差一步,在setting加入一行,在環境變數中加入REMOTE_USER的用戶名,注意jerry是系統中已經存在的一個用戶


os.environ['REMOTE_USER'] = "jerry"
登入後複製

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

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

 

以上是django server之間透過remote user互相呼叫方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板