Laravel має потужну функцію безпеки через Auth::logoutOtherDevices(), що дозволяє користувачам завершувати сеанси на всіх пристроях, окрім поточного. Ця можливість особливо важлива для забезпечення безпеки облікових записів у додатках, які обробляють чутливу інформацію.
Ви можете реалізувати цю функцію як проактивний захід безпеки, наприклад, у відповідь на підозрілі дії:
public function secureSessions(Request $request)
{
Auth::logoutOtherDevices($request->password);
return back()->with('status', 'Усі інші сеанси завершено');
}
Для правильної обробки сеансів необхідно використовувати middleware auth.session:
Route::middleware(['auth', 'auth.session'])->group(function () {
// Захищені маршрути
});
Ось приклад реалізації для оновлення пароля з одночасним виходом з пристроїв:
class SecurityController extends Controller
{
public function updatePassword(Request $request)
{
$validated = $request->validate([
'current_password' => 'required',
'new_password' => 'required|min:8|confirmed'
]);
if (!Hash::check($request->current_password, Auth::user()->password)) {
return back()->withErrors([
'current_password' => 'Введено неправильний пароль'
]);
}
Auth::logoutOtherDevices($request->current_password);
Auth::user()->update([
'password' => Hash::make($request->new_password)
]);
return redirect('/dashboard')
->with('status', 'Пароль оновлено, інші пристрої вийшли з системи');
}
}
Цей підхід надає користувачам більший контроль над безпекою їхніх облікових записів, запобігаючи несанкціонованому доступу через забуті активні сеанси