2017-01-19 5 views
0

abgelaufen ist habe ich einen Blick auf meine Django-Website, die eine Bootstrap-Taste hat, die eine wichtige Operation durchführt, den Betrieb, die den Benutzer erfordert angemeldet sein.deaktivieren UI-Taste, wenn Cookie/login

jedoch auf unserer Website Die Cookies haben eine Lebensdauer von 15 Minuten, was bedeutet, dass ein Benutzer, der eingeloggt ist, auf eine Tasse Tee geht und dann zurückkommt und auf den Knopf klickt, der denkt, dass die Operation durchgeführt wurde, obwohl er tatsächlich sein wird abgemeldet.

Gibt es eine Möglichkeit, über JQuery oder auf andere Weise zu überprüfen, ob die Cookies abgelaufen sind, und die Schaltfläche zu deaktivieren, wenn dies der Fall ist?

Danke,

Alberto

Antwort

1

Es klingt wie Sie verfolgen müssen, wie lange der Benutzer inaktiv ist. Wenn die Benutzersitzung abgelaufen ist, möchten Sie wahrscheinlich nur den Anmeldebildschirm laden, nein?

Hier ist eine Lösung, die die Seite nach 20 Minuten Leerlaufzeit neu lädt. Wenn Ihre django-App den Benutzer nach Ablauf der Sitzung zum Anmeldebildschirm weiterleitet, könnte die Lösung für Sie funktionieren.

Detecting idle time in JavaScript elegantly

+0

Entschuldigung, ich bin ein bisschen wie ein Noob JQuery. Würde es funktionieren, wenn der Benutzer auf einer anderen Website surft oder auf seinem Computer etwas anderes macht? –

1

Sie könnten einen Blick schreiben, der überprüft, ob der Benutzer authentifiziert und hat jQuery es periodischen Ajax-Aufruf durchzuführen. Wenn die Ansicht eine nicht eingeloggte Antwort zurückgibt, laden Sie die Seite neu oder führen Sie eine andere Aktion durch, um die Schaltfläche auszublenden.

Hier ist ein kurzes Beispiel:

#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

Das ist eine gute Idee. Ich habe es versucht, aber das Problem ist, wenn der Benutzer inaktiv ist und die Sitzung abgelaufen ist, ist es immer noch angemeldet angemeldet. Kann nicht verstehen, warum ich in der Zwischenzeit "login_required()" Dekorator, um dem Benutzer das klar zu machen Er muss sich erneut einloggen. –

Verwandte Themen