但是我們的應用肯經(jīng)都會有對應的鑒權機制。不會讓人家隨隨便便就訪問的對吧。好比上車要刷卡(滴,老人卡~~~)。我們知道在瀏覽器用戶登陸后,每次請求都會對應的session,server可以根據(jù)對用的session判斷用戶的權限信息。但是我們不容易在server端使用,可能存在session失效時間等問題。
所以動手查看django官方文檔,發(fā)現(xiàn)django提供remote user機制,可以支持server之間的遠程調用。只需要在setting中添加如下設置:
MIDDLEWARE_CLASSES = ( '...', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware', '...', ) AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.RemoteUserBackend', )
滿心歡喜測試了一下,發(fā)現(xiàn)還是不行~~~(我就知道沒這么簡單)
還差一步,在setting添加一行,在環(huán)境變量中添加REMOTE_USER的用戶名,注意jerry是系統(tǒng)中已經(jīng)存在的一個用戶
os.environ['REMOTE_USER'] = "jerry"
完成,這樣在請求中沒有session信息,或通過session判斷用戶沒有登陸時,就會自動使用上面的REMOTE_USER用戶登錄。這樣我們就有了一個公用的上車卡,但是為了安全我們可能需要給這個用戶設定一些權限限制。(這樣就算上了車,也只能沒有作為只能站著,哈哈)
但是這樣也可能帶來一些問題,比如我們在其他接口中判斷當前用戶是否登錄,如果沒有就從定向到登錄界面。但是采用REMOTE_USER后,會自動登錄也就無法定向到登錄頁面。這就需要我們重新設計用戶登錄的邏輯。
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com