Laravel Сессия занимает время, чтобы удалить из базы данных - PullRequest
0 голосов
/ 23 февраля 2020

Я создаю Laravel Приложение. У меня есть 3 типа пользователей

Одиночный: Можно войти в систему на одном браузере / устройстве

Двойной: Можно войти в систему на двух браузерах / устройствах

Несколько: Можно войти на пять браузеров / устройств

Я использую Laravel База данных сеансов для отслеживания

Вот как выглядит мой код

public function authenticated(Request $request, User $user)
{

    if(Auth::check())

    { //check if the user is logged in or not
        $user = Auth::user();
      //  $login = Session::where('user_id', Auth::id())->count();
      $login = DB::table('sessions')->where('user_id', Auth::id())->count();
       // dd($login);
        if ($user->isSingle()) 
        {
            if ($login > 0)
            {
                Auth::logout();    
                session()->flash('logout', "You are Logged in on other devices");
                return redirect('login');
            }

            return redirect(route('welcome'));
        }

        elseif ($user->isDouble()) 
        {
            if ($login > 1)
            {
                Auth::logout();    
                session()->flash('logout', "You are Logged in on other devices");
                return redirect('login');
            }

            return redirect(route('welcome'));
        }

        elseif ($user->isMultipe()) 
        {
            if ($login > 5)
            {
                Auth::logout();    
                session()->flash('logout', "You are Logged in on other devices");
                return redirect('login');
            }

            return redirect(route('welcome'));

            }
        }

        else 
        {
            return redirect(route('welcome'));
        }
    } 

Это схема для таблицы сеансов

Schema::create('sessions', function ($table) {
    $table->string('id')->unique();
    $table->unsignedInteger('user_id')->nullable();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->integer('last_activity');
});

Когда пользователь выходит из системы, user_id превращается в ноль, что идеально.

Но когда пользователь выходит из системы из-за неактивности какое-то время, user_id не обнуляется, пока через пару часов.

Мой вопрос: как я могу убедиться, что когда сеанс завершается либо из-за выхода из системы, либо из-за неактивности (когда приложение выводит пользователя из системы), столбец user_id в базе данных сеанса становится пустым?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...