Как сделать выход из аккаунта с указанного устройства laravel?

60f71fb628632813127635.png
Нужно реализовать функционал как на картинке.
Сессии я храню в бд.
Цель - выйти из аккаунта на выбранном устройстве. Те что-то похожее на Auth::logoutOtherDevices($password), но для одного устройства, обязательно не на том устройстве с которого сидит пользователь.
Просто удаление сессии не помогает, тк с аккаунта не выбрасывает
  • Вопрос задан
  • 982 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Barmunk
есть 3 способа, какой-нибудь да подойдет

1.
// https://laravel.com/docs/8.x/authentication#invalidating-sessions-on-other-devices

Auth::logoutOtherDevices($currentPassword);


2.
// php artisan make:middleware LogoutUsers
// app/Http/Kernel.php -> $middlewareGroups -> web

<?php
namespace App\Http\Middleware;

use Auth;
use Closure;

class LogoutUsers
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       if (!auth()->check()) {
            return $next($request);
        }

        $user = Auth::user();

        if ($user->logout === false) {
            $user->update(['logout' => true]);
            Auth::logout();

            return redirect()->route('login');
        }

        return $next($request);
    }
}


3.
//текущий юзер
$user = Auth::user();

//выход конкретного юзера
$userToLogout = User::find(5);
Auth::setUser($userToLogout);
Auth::logout();

//возвращаем текущего юзера
Auth::setUser($user);
Ответ написан
PeterLS
@PeterLS
Руководитель веб-студии
Один из вариантов, с помощью Middleware проверять наличие строки в БД (можно не при каждом обновлении страницы, а каждую минуту, например):
select 1 from sessions where id = 'current_session_id' and user_id = 'current_user_id';
Если нет строки (ранее удалена сессия из админки) сбросить авторизацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы