Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як завершити сесії користувача на інших пристроях?

Типовий випадок - користувач змінив пароль, бо підозрює злам, і стара сесія на чужому пристрої має перестати працювати.

Для сесій у браузері:

Route::middleware(['auth', 'auth.session'])->group(function () {
    // ...
});

Auth::logoutOtherDevices($request->input('current_password'));

logoutOtherDevices() перехешовує пароль, а middleware auth.session (AuthenticateSession) на кожному запиті порівнює хеш, збережений у сесії, з поточним. На інших пристроях хеші більше не збігаються - сесія закривається. Без auth.session на маршрутах виклик нічого не дає, і це найчастіша помилка.

Для API-токенів Sanctum механізм інший - токени відкликають явно:

$user->tokens()->delete();                          // усі
$user->tokens()->where('id', $tokenId)->delete();   // один пристрій

«Запам'ятати мене» скидається через новий remember_token.

Повна картина для користувача - сторінка «Активні сесії» з пристроями й можливістю закрити окрему. Для цього сесії мають бути в базі (драйвер database), щоб їх можна було перелічити й видалити за user_id.

Після зміни пароля варто також надіслати лист «Ваш пароль змінено» - якщо це зробив не власник, він дізнається одразу.

Докладніше в документації: Скасування сесій на інших пристроях

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання