Есть ли способ проверить, существует ли Laravel Session с определенным SessionId? - PullRequest
0 голосов
/ 30 апреля 2018

Когда пользователь меняет пароль, я хочу аннулировать все остальные его сеансы (кроме текущего), тем самым выйдя из системы со всех остальных устройств, для этого я следую стратегии этого ответа с file driver, сохраняя ТОЛЬКО пользователя sessionIds в базе данных для отслеживания сеансов пользователя.

Теперь, с помощью Laravel 5.1 мы можем получить SessionId с \Illuminate\Support\Facades\Session::getId() ( API ), но есть ли способ проверить, существует ли Session с каким-либо конкретным sessionId или нет?

Я видел, как Laravel создает файлы сеансов, называя их с помощью sessionId, так что в качестве последнего варианта я могу проверить, если file_exists(sessionId), но я хотел знать, есть ли какой-нибудь другой способ?

1 Ответ

0 голосов
/ 30 апреля 2018

Если вы используете Laravel 5.6 и выше, это позволяет вам делать это из коробки. Вы можете прочитать документацию здесь , но это суть.

Сначала добавьте \Illuminate\Session\Middleware\AuthenticateSession::class в ваш стек промежуточного программного обеспечения. Он уже должен быть там, но закомментирован (именно так он и поступает в Laravel). Затем, когда пользователь меняет свой пароль, вы должны передать его в Auth::logoutOtherDevices($password).

Laravel хранит хешированную копию пароля в сеансе, поэтому при смене пароля промежуточное ПО принудительно выходит из сеанса, в котором есть хэш старого пароля. Было бы намного лучше использовать эту встроенную функциональность, а не пытаться свернуть свою собственную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...