2015-05-06 5 views
6

Ich versuche, Benutzer automatisch in yii2 abzumelden, nachdem er für eine feste Sekunden im Leerlauf ist. In web.php fügte ichauthTimeout in Yii2

'user' => [ 
      'identityClass' => 'app\models\User', 
      'enableAutoLogin' => true, 
      'authTimeout'=>100 
     ], 

innen components. Ich verwende grundlegende Vorlage. Aber es meldet sich nicht automatisch ab. Funktioniert das in Yii2? Ich folgte Dokumentation von http://www.yiiframework.com/doc-2.0/yii-web-user.html

+0

Haben Sie vollständig automatische Abmeldung erwarten? Ich denke, es wird nur passieren, wenn der Benutzer für diese Zeit nicht aktiv war und dann versucht, bestimmte Seiten zu öffnen/zu aktualisieren. – arogachev

+0

ich möchte, dass der Benutzer auf die Seite/Login umgeleitet wird – user7282

+0

Ich fragte nach Details dazu. Benutzerdefiniertes JavaScript wird benötigt, um eine vollständige automatische Abmeldung zu erreichen. Siehe @ Pavel Barievs Antwort. – arogachev

Antwort

1

Ihre Konfiguration ist korrekt. Aber es wird nicht automatisch Ihre Seite aktualisieren und Ihr Anmeldeformular anzeigen. Technisch wird es Sie nur bei der nächsten Anfrage abmelden, nachdem die Sitzung abgelaufen ist. Und Sie sollten wissen, dass Ajax-Skripte auf Ihrer Seite funktionieren und einige andere Seiten nach Zeitintervallen aufrufen. Jede Anfrage verlängert das Sitzungs-Timeout. Es gibt auch "absoluteAuthTimeout" -Parameter anstelle von "authTimeout" - die Sie trotz Ihrer Aktivität nach dem Timeout abmeldet.

+0

aber es funktioniert nicht. Ich habe versucht absoluteTimeout auch – user7282

+0

Dies ist genau das, was ich in meinem Kommentar angeben/erklären möchte. Der Benutzer hat keine Details dazu angegeben. – arogachev

4

$authTimeout - öffentliches Eigentum.

Die Anzahl der Sekunden, in denen der Benutzer automatisch ausgeloggt wird, wenn er inaktiv bleibt. Wenn diese Eigenschaft nicht festgelegt ist, wird der Benutzer nach Ablauf der aktuellen Sitzung abgemeldet (vgl. yii\web\Session::$timeout).

Beachten Sie, dass dies nicht funktioniert, wenn $enableAutoLogintrue ist.

0

In Ihrer config/web.php Datei:

In $config Array:

...

'user' => [ 
      'identityClass' => 'app\models\User', 
      //'enableAutoLogin' => true, 
      'enableSession' => true, 
      'authTimeout' => 60, 
     ], 

...

Bitte beachten Sie, ich die //enableAutoLogin kommentierte, die von authTimeout verhindert ordnungsgemäß funktionieren

0

Sie können auch

session.gc_maxlifetime 

Einstellung in php.ini

standardmäßig verwenden es 1440 Sekunden ist.

0

wenn Sie Benutzer nach X Zeit abmelden möchten. Sie sollten jede Sekunde mit Ajax überprüfen. Wenn abgelaufen Umleitung zum Abmelden

+0

Ich habe diese Funktionalität auch nur mit dieser Methode implementiert – user7282

0

Entfernen Sie einfach "enableAutoLogin" aus Ihrer Benutzerkonfiguration und es wird einfach gut funktionieren.

Ihr Code soll wie folgt aussehen:

'user' => [ 
      'identityClass' => 'app\models\User', 
      'authTimeout'=>100 
     ],