2017-01-19 54 views
0

我有我的Django的網站上的觀點具有引導按鈕執行一個重要的操作,操作需要用戶先登錄。禁用UI按鈕餅乾/登錄已過期

然而,在我們的網站這些餅乾的壽命是15分鐘,這意味着登錄的用戶喝杯茶,然後回來並點擊按鈕會認爲操作已經完成,而實際上他/她將會登出。

是否有任何方法通過JQuery檢查或以其他方式檢查cookie是否已過期,並在這種情況下禁用按鈕?

感謝,

阿爾貝託

回答

1

這聽起來像你需要跟蹤用戶閒置的時間。當用戶的會話過期時,您可能只想加載登錄屏幕,不是嗎?

這是一個解決方案,可在空閒20分鐘後重新加載頁面。如果您的django應用程序在會話過期後將用戶重定向到登錄屏幕,則該解決方案可以爲您工作。

Detecting idle time in JavaScript elegantly

+0

對不起,我有點JQuery的小白。如果用戶瀏覽不同的網站或在他的電腦上做不同的事情,它會起作用嗎? –

1

你可以寫檢查,如果用戶進行身份驗證,並有jQuery來對其執行定期AJAX調用的視圖。如果視圖返回「未登錄」響應,請重新加載頁面或執行其他操作來隱藏按鈕。

這裏有一個簡單的例子:

#The view 
def check_if_logged_in(request): 
    if request.user.is_authenticated: 
     return HttpResponse('logged-in') 
    else: 
     return HttpResponse('not-logged-in') 

#The jQuery 
function ajax_check(){ 
    $.get(
     'the-view-url' 
    ).done(function(response){ 
     if (response === 'not-logged-in'){ 
      location.reload(true); 
     } 
    }).fail(
     // something else 
    ); 
} 

setInterval(ajax_check, 15000) 
+0

這是一個好主意。我試過了,但問題是如果用戶不活動並且會話已過期,它仍然返回登錄狀態。無法理解爲什麼,與此同時,我正在使用「login_required()」裝飾器來向用戶說明他必須重新登錄。 –