簡體   English   中英

Flask-Login login_manager.session_protection=strong 不會重定向到登錄頁面

[英]Flask-Login login_manager.session_protection=strong doesn't redirect to login page

我們正在使用flask-login 來處理我們網頁的登錄。 我們希望它對會話非常嚴格,因此當瀏覽器關閉時,會提示用戶重新登錄。

我們希望用戶會被發送到每個 url 的登錄頁面,並且會話不會持續。

我們需要嚴格的保護

login_manager.session_protection = "strong"
login_manager.refresh_view = "users.login"

刷新視圖用作文檔狀態:

刷新視圖

The name of the view to redirect to when the user needs to reauthenticate

當用戶關閉瀏覽器並開始新會話時,系統不會提示他們登錄,而是會提供一個頁面,其中 href 重定向到登錄頁面,其他鏈接會出現權限錯誤。 這不是最優的。

在內部,使用flask_login完成重定向的方式是使用login_manager.py文件中的login_manager.py unauthorized()函數,該函數使用request庫來獲取用戶嘗試訪問的頁面的請求url。 當用戶注銷嘗試訪問該頁面時,它將正確獲取正確的 url 並將用戶重定向到分配給login_view設置的變量。 但是,當會話保護設置為strong並且用戶退出應用程序並重定向到頁面時, unauthorized()函數不會被執行。

那么為什么不將它們發送到每個新瀏覽器實例的登錄頁面呢?

在我們的例子中,用戶仍然有一個記住我的 cookie 來持久化會話。 添加此行后

REMEMBER_COOKIE_DURATION = timedelta(minutes=0)

用戶被正確發送到登錄頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM