[英]Django auto logout and page redirection
我有一個應用程序,其后端是使用 django 和 python 編寫的。 我想在我的應用程序中實現自動注銷功能。 為此,我使用了以下 django 內置功能:
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 40
SESSION_SAVE_EVERY_REQUEST = True
我還使用LOGOUT_REDIRECT_URL
在注銷后重定向頁面。
但這沒有幫助。
40 秒后,注銷發生但在前端不可見,只有當用戶刷新選項卡或在選項卡中提出任何請求時,登錄頁面才會出現。
如果我關閉瀏覽器並再次打開它,主頁將顯示沒有數據,因為數據是特定於用戶的。 如果選項卡已完成刷新,選項卡將重定向到登錄頁面。
我想實現兩個場景:
如果自動登錄發生,用戶應該被自動重定向到登錄頁面。
如果用戶關閉瀏覽器窗口並再次打開它,則應向用戶顯示應用程序的登錄頁面。
關於如何實現這些場景的任何建議?
任何幫助,將不勝感激。 謝謝你。
- 40秒后,將注銷,但在前端不可見,僅當用戶刷新選項卡或在選項卡中發出任何請求時,登錄頁面才會出現。
是的,就是這樣。 您的瀏覽器不會自動執行任何操作。 您必須編寫必要的Javascript代碼來監視會話cookie的壽命。 並且當它過期時,您的Javascript代碼將加載登錄頁面。
- 如果我關閉瀏覽器並再次打開它,則主頁將顯示無數據,因為這些數據是用戶特定的。 如果選項卡的刷新完成,則選項卡將重定向到登錄頁面。
聽起來不對。 如果您重新打開瀏覽器並訪問應用程序的主頁,則應該進入登錄頁面。 但是,您是否要在重新打開瀏覽器的會話( Ctrl + Shift + T
)后恢復它?
自動注銷。
在 settings.py 文件中添加以下兩個值:
1. SESSION_COOKIE_AGE = TIME #//change expired session
Example: SESSION_COOKIE_AGE = 240*60 #//four hours or your time
SESSION_SAVE_EVERY_REQUEST = True
############################################### ###########
然后在 base.html 文件中添加以下 jquery 代碼:
function autorefresh() {
// auto refresh page after 1 second
setInterval('refreshPage()', 6*1000);
}
function refreshPage() {
$.ajax({
url: window.location.pathname,
success: function(data) {
window.location = "."
// $('#console').html(data);
}
});
}
</script>
<script>autorefresh()</script>
<div id="console" ></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.