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

Как я могу заставить всех пользователей выйти из SPA?Я хочу, чтобы при развертывании новой версии все пользователи автоматически выходили из системы.

Я попробовал следующее, но не уверен, является ли это самым безопасным способом сделать это.

php artisan key:generate

Ответы [ 4 ]

0 голосов
/ 29 ноября 2018

Как видите, SessionGuard делает несколько вещей, и они не зависят от типа SESSION_DRIVER, который вы установили в своей среде.

Итак, прочитав некоторые издискуссия на форумах с Тейлором и некоторыми другими тяжеловесами Laravel о том, почему нет такой простой функции, возможно, лучшим решением было бы создать после развертывания Job или Command, который вы могли бы запустить, который бы просто циклчерез всех пользователей, так что для чего бы то ни было установлен сеанс.Я бы попробовал что-то вроде:

\App\User::each(function ($u) {
    Auth::login($u);
    Auth::logout();
});
0 голосов
/ 29 ноября 2018

Если данные вашего сеанса хранятся в базе данных, вам необходимо очистить таблицу sessions.Выполнение простого запроса SQL решит проблему:

DELETE FROM sessions;

Если сеансы хранятся в файлах, то, как предлагает @Karl, вам нужно удалить файлы сеансов из файловой системы:

rm -rf storage/framework/sessions/*

Имя cookie сеанса также можно изменить, чтобы все сеансы были недействительными, но это изменение кода, а не очистка данных.Имя можно обновить в ключе cookie в файле config/session.php.Эта опция НЕ рекомендуется.

0 голосов
/ 29 ноября 2018

это действительно зависит от выбранного диска сессий.

  • если вы используете файловый диск, вы можете удалить путь к хранилищу / инфраструктуре / сессиям
  • , если вы используете диск базы данных, вы можете удалитьвсе строки таблицы сеансов,

для любого другого диска, вы можете сделать это, как и другие.

Вы также можете изменить значение cookie в app / session.php, чтобы пользователь автоматически выходил из системыиз-за того, что cookie не совпадают с конфигурацией

Стоит отметить, что Laravel на самом деле хранит только активные сеансы в папке сеанса;те, которые «запоминаются», но не получают активного доступа к вашему приложению, не включаются в эти сеансы.Таким образом, простое удаление файлов не завершит работу.

Вы также должны удалить все токены Remember из таблицы пользователей, так как этот токен используется вместе с локальным токеном, хранящимся в cookie, для повторногосоздать сеанс при повторном подключении пользователя.

0 голосов
/ 29 ноября 2018

Вы можете уничтожить все сеансы.Если вы используете Laravel Envoy для обработки развертываний, вы можете добавить следующую строку:

rm -rf storage/framework/sessions/*

Если вы используете драйвер сеанса базы данных, очистить таблицу сеансов очень просто:

DB::table('sessions')->truncate();
...