РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
717 of 1392 menu

Метод logoutOtherDevices

Метод logoutOtherDevices класса Auth предназначен для завершения сессий пользователя на всех других устройствах, кроме текущего. Первым параметром метод принимает текущий пароль пользователя для подтверждения операции. Вторым параметром передается имя защитного механизма (guard). Если guard не указан, используется guard по умолчанию. Метод возвращает true при успешном завершении сессий, либо выбрасывает исключение AuthenticationException, если пароль неверен.

Синтаксис

<?php Auth::logoutOtherDevices($password, $guard); ?>

Пример использования в контроллере

Давайте реализуем метод в контроллере, который завершает сессии на всех других устройствах:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\ValidationException; class ProfileController extends Controller { public function logoutOtherDevices(Request $request) { $request->validate([ 'password' => ['required', 'current_password'], ]); Auth::logoutOtherDevices($request->password); return redirect('/profile')->with('status', 'Other devices logged out successfully'); } } ?>

Пример обработки исключения

Рассмотрим пример с обработкой ошибки при неверном пароле:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\ValidationException; use Illuminate\Auth\AuthenticationException; class ProfileController extends Controller { public function logoutOtherDevices(Request $request) { $request->validate([ 'password' => ['required'], ]); try { Auth::logoutOtherDevices($request->password); return redirect('/profile')->with('status', 'Other devices logged out successfully'); } catch (AuthenticationException $e) { throw ValidationException::withMessages([ 'password' => __('auth.password'), ]); } } } ?>

Пример с указанием guard

Пример использования метода с явным указанием guard:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class ProfileController extends Controller { public function logoutOtherDevices(Request $request) { $request->validate([ 'password' => ['required', 'current_password:admin'], ]); Auth::logoutOtherDevices($request->password, 'admin'); return redirect('/admin/profile')->with('status', 'Other admin devices logged out'); } } ?>

Пример в шаблоне Blade

Пример формы для вызова метода logoutOtherDevices:

<form method="POST" action="{{ route('profile.logout-other-devices') }}"> @csrf <div> <label for="password">Current Password</label> <input type="password" id="password" name="password" required> @error('password') <span>{{ $message }}</span> @enderror </div> <button type="submit">Logout Other Devices</button> </form> @if (session('status')) <div> {{ session('status') }} </div> @endif

Результат выполнения кода:

"Other devices logged out successfully"

Смотрите также

  • класс Auth,
    который предоставляет методы для аутентификации
  • метод logout,
    который завершает текущую сессию пользователя
  • метод login,
    который аутентифицирует пользователя и начинает сессию
  • метод check,
    который проверяет аутентификацию текущего пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить