Laravel 5.6: принудительный выход из системы запомнить меня войти - PullRequest
0 голосов
/ 02 декабря 2018

В моем приложении есть собственный контроллер входа, который предотвращает несколько сеансов на пользователя.Он выходит из системы, если пользователь входит в систему с другого устройства / браузера:

public function authenticated(Request $request, $user) {
  $previous_session = $user->session_id;

  if ($previous_session) {
    session()->getHandler()->destroy($previous_session);
  }

  auth()->user()->session_id = session()->getId();
  auth()->user()->save();

  return redirect(session()->pull('from', $this->redirectTo));
}

Независимо от драйвера сеанса этот код ищет таблицу session_id на users и уничтожает связанный с ним сеанс.

Но это не работает, если пользователь вошел в систему с включенным флажком запомнить меня.Пользователь остается в системе с предыдущего устройства / браузера.Как я могу сказать Laravel забыть это, помните меня после второго входа?Спасибо.

1 Ответ

0 голосов
/ 17 января 2019

Вы должны сделать недействительным или циклично remember_token в таблице базы данных users.

Это происходит автоматически при вызове Auth::logout().

. remember_token также может бытьаннулировано вручную, аналогично тому, как Laravel обрабатывает его:

protected function cycleRememberToken(AuthenticatableContract $user)
{
    $user->setRememberToken($token = Str::random(60));

    $this->provider->updateRememberToken($user, $token);
}

Источник: laravel / framework / src / Illuminate / Auth / SessionGuard.php

...