Laravel позволяет пользователю входить в систему только с одного устройства, разрешает только один сеанс для каждого полPhp

Кемеровские программисты php общаются здесь
Anonymous
Laravel позволяет пользователю входить в систему только с одного устройства, разрешает только один сеанс для каждого пол

Сообщение Anonymous »


Я разрабатываю приложение Laravel, и мне нужно реализовать функцию безопасности, которая позволяет пользователям входить в систему только с одного устройства одновременно. Другими словами, я хочу обеспечить один сеанс для каждого пользователя в моем приложении.

Я понимаю, что Laravel предоставляет встроенные функции управления сеансами, но по своей сути не запрещает пользователям входить в систему с нескольких устройств одновременно. Чтобы выполнить это требование, мне нужно руководство по внедрению решения, которое гарантирует, что пользователь может иметь только один активный сеанс одновременно.

У меня есть несколько конкретных вопросов:
[*]Как я могу обнаружить и предотвратить множественный вход в систему одного и того же пользователя? аккаунт? [*]Каков наилучший способ аннулировать предыдущие сеансы, когда пользователь входит в систему с нового устройства? [*]Как я могу обрабатывать случаи, когда сеанс пользователя становится неактивным или истекает?
Я был бы очень признателен за любую информацию или примеры кода, которые помогут мне выполнить эту задачу.

Это мой текущий метод входа:

публичное хранилище функций (LoginRequest $request) { $request->аутентификация(); // Проверяем, есть ли у пользователя активная сессия $previousSessionId = Redis::get('ga:user_session_id:'. Auth::id()); если ($previousSessionId) { // Уничтожаем предыдущий сеанс Redis::del('ga:user_session_id:'. Auth::id()); // Выходим из системы Аутентификация:: выход из системы (); возврат прерывания (403); // Возвращаем ответ об ошибке, указывающий, что несколько сеансов не разрешены } $request->session()->regenerate(); $user = Auth::user(); $sessionId = uniqid(); // Генерируем уникальный идентификатор сеанса // Сохраняем уникальный идентификатор сеанса в Redis Redis::set('ga:user_session_id:' . $user->id, $sessionId); если (Auth::user()) { if (Auth::user()->hasRole('الوصول الى لوحة التحكم')) { return redirect()->route('dashboard'); } еще { return redirect()->intended(RouteServiceProvider::HOME); } } } Используя предыдущий код, например, если я вошел в систему с помощью устройства 1, он вошел успешно. Если я вошел в систему с помощью устройства 2, в то время как устройство 1 было зарегистрировано, оно вернуло 403, но когда я обновил вкладку, оно также зарегистрировало устройство 2, и оба устройства вошли в систему одновременно.

Вернуться в «Php»