Guten Morgen, Ich benutze CakePHP 3 zum ersten Mal, und ich frage mich, wie kann ich verhindern, dass zwei oder mehr Personen mit dem gleichen Benutzernamen zur gleichen Zeit einloggen?cakePHP 3 Wie kann man mehr als eine Anmeldung mit demselben Benutzernamen/Passwort gleichzeitig verhindern?
Ich benutze Auth-Komponente zum Anmelden und Abmelden und alles funktioniert wunderbar.
Recherchiert und verstanden, dass die Notwendigkeit, Sessions zu verwenden, haben Sie die folgenden Optionen als Kochbuch: in app.php:
'Session' => [
'defaults' => 'database'
]
und die Tabelle erstellt:
CREATE TABLE `sessions` (
`id` varchar(255) NOT NULL DEFAULT '',
`data` BLOB, -- or BYTEA for PostgreSQL
`expires` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);
Es speichert die Sitzung in der Datenbank. Trotzdem kann derselbe Benutzername mehrmals gleichzeitig mit dem System verbunden werden, zum Beispiel mit localhost, wenn zwei Browser mit demselben Benutzernamen angemeldet sind.
Ich schreibe die Frage, weil ich das Rad nicht neu erfinden will, und ich weiß, dass CakePHP ziemlich vollständig ist. Also frage ich mich, ob eine Komponente bereit ist, oder welche Konfiguration sollte sich ändern, damit dies funktioniert?
Vielen Dank
Und was passiert beim Abmelden oder wenn die Sitzung abläuft? Der Wert in der Datenbank würde "wahr" bleiben, und der Benutzer konnte sich nicht mehr anmelden (da Sie den DB-Wert tatsächlich überprüfen würden). Außerdem lesen Sie die Benutzerdaten aus der Sitzung, was bedeutet, dass sie für neue Clients immer als falsch bewertet werden und somit mehrere Anmeldungen weiterhin möglich sind. – ndm
Führen Sie einen Cron-Job oder ein Skript aus, das die Zeile zurücksetzt is_logged –
Ich löste das Problem, indem ich eine eindeutige ID für jeden Zugriff speicherte. jede Anmeldung Ich speichere eine neue id_logged in Benutzerdaten in der Datenbank. Und ich benutze die Funktion isAuthorized und testet diese Anzahl von id_logged jede Hauptfunktion. Wenn sich zum Beispiel jemand an einem anderen Rechner mit dem gleichen Benutzernamen anmeldet, ändert sich die id_logged-Datenbank und der aktuell angemeldete Benutzer meldet sich automatisch ab. –