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

首先,場景是這樣的:存在兩個django web應用,而且兩個應用存在必定的聯繫。某些狀況下彼此須要獲取對方的數據。python

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

因此動手查看django官方文檔,發現django提供remote user機制,能夠支持server之間的遠程調用。只須要在setting中添加以下設置:django

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用戶登陸。這樣咱們就有了一個公用的上車卡,可是爲了安全咱們可能須要給這個用戶設定一些權限限制。(這樣就算上了車,也只能沒有做爲只能站着,哈哈)session

可是這樣也可能帶來一些問題,好比咱們在其餘接口中判斷當前用戶是否登陸,若是沒有就從定向到登陸界面。可是採用REMOTE_USER後,會自動登陸也就沒法定向到登陸頁面。這就須要咱們從新設計用戶登陸的邏輯。測試

 

強行開車,若有錯誤或好的看法歡迎指正。這裏是老瘦家的兒子,如需轉載請聲明,我替老瘦感謝你。設計

相關文章
相關標籤/搜索