Управління сесіями на кількох пристроях за допомогою функції виходу з системи в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 22 лютого, 2025
Захист вашого облікового запису в Laravel ніколи не був таким простим! Дізнайтеся, як реалізувати функцію logoutOtherDevices для завершення сесій на всіх пристроях, щоб забезпечити безпеку чутливих даних у вашій аплікації

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', 'Пароль оновлено, інші пристрої вийшли з системи');
    }
}

Цей підхід надає користувачам більший контроль над безпекою їхніх облікових записів, запобігаючи несанкціонованому доступу через забуті активні сеанси