簡體   English   中英

Django 自動注銷和頁面重定向

[英]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在注銷后重定向頁面。

但這沒有幫助。

  1. 40 秒后,注銷發生但在前端不可見,只有當用戶刷新選項卡或在選項卡中提出任何請求時,登錄頁面才會出現。

  2. 如果我關閉瀏覽器並再次打開它,主頁將顯示沒有數據,因為數據是特定於用戶的。 如果選項卡已完成刷新,選項卡將重定向到登錄頁面。

我想實現兩個場景:

  1. 如果自動登錄發生,用戶應該被自動重定向到登錄頁面。

  2. 如果用戶關閉瀏覽器窗口並再次打開它,則應向用戶顯示應用程序的登錄頁面。

關於如何實現這些場景的任何建議?

任何幫助,將不勝感激。 謝謝你。

  1. 40秒后,將注銷,但在前端不可見,僅當用戶刷新選項卡或在選項卡中發出任何請求時,登錄頁面才會出現。

是的,就是這樣。 您的瀏覽器不會自動執行任何操作。 您必須編寫必要的Javascript代碼來監視會話cookie的壽命。 並且當它過期時,您的Javascript代碼將加載登錄頁面。

  1. 如果我關閉瀏覽器並再次打開它,則主頁將顯示無數據,因為這些數據是用戶特定的。 如果選項卡的刷新完成,則選項卡將重定向到登錄頁面。

聽起來不對。 如果您重新打開瀏覽器並訪問應用程序的主頁,則應該進入登錄頁面。 但是,您是否要在重新打開瀏覽器的會話( Ctrl + Shift + T )后恢復它?

自動注銷。

在 settings.py 文件中添加以下兩個值:

1. SESSION_COOKIE_AGE = TIME #//change expired session

Example: SESSION_COOKIE_AGE = 240*60   #//four hours  or your time
  1. 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.

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