/ / dynamisches Sitzungszeitlimit - Sitzung, CakePHP, Timeout

dynamisches Sitzungszeitlimit - Sitzung, CakePHP, Timeout

Kann ich das Sitzungszeitlimit dynamisch ändern? Das Zeitlimit muss entsprechend der Benutzerrolle festgelegt werden. Ich habe versucht, configure :: write zu verwenden, um das Timeout dynamisch zu ändern, aber es funktioniert nicht. Es scheint, dass für das neue Session-Timeout die Sitzung zurückgesetzt werden muss, aber das Zurücksetzen der Sitzung verliert die Login-Informationen.

Antworten:

0 für die Antwort № 1

Ich denke, wenn Sie etwas wie das Folgende verwenden, nachdem Sie die Rollenmitgliedschaft überprüft haben, bekommen Sie, was Sie wollen.

HttpContext.Current.Session.Timeout = 1200;

0 für die Antwort № 2

Ich denke, Sie haben recht, wenn Sie sagen, dass Sie das Sitzungszeitlimit nicht ändern können, nachdem es erstellt wurde, vielleicht könnten Sie sich einen neuen mit einem neuen Timeout erstellen.

Aber vielleicht wäre eine einfachere Lösung zu verwendenJavascript, Sie könnten einen Timeout-Wert festlegen und wenn es ausläuft senden Sie eine Ajax-Anfrage den Benutzer ausloggen. Dies funktioniert offensichtlich nicht, wenn ein Benutzer Javascript deaktiviert, aber es hängt davon ab, wie sicher Sie dies wünschen.


0 für die Antwort № 3

Anstatt das Session-Timeout zu ändern, haben Sie in Erwägung gezogen, eine Variable in der Sitzung zu verwenden, um das Datum / die Uhrzeit des letzten Seitenladens zu speichern, sodass Sie es beim nächsten Seitenladen überprüfen können?

Sie könnten dem beforeFilter () Code hinzufügenMethode in AppController, um den Zeitraum zu berechnen, der zwischen dem letzten Laden (in der Sitzung gespeichert) und jetzt verstrichen ist, und wenn dieser Wert größer als die Sitzungslänge für die angegebene Benutzerrolle ist, die Sitzung zu zerstören. Wenn nicht, speichern Sie das aktuelle Datum / die aktuelle Uhrzeit in der Sitzung, damit es beim nächsten Mal verwendet werden kann.