Как избежать нескольких пользовательских сессий в symfony 4? - PullRequest
0 голосов
/ 18 марта 2020

Как я могу запретить зарегистрированному пользователю доступ к сайту с нескольких устройств?

Я создаю функцию onSecurityInteractiveLogin в EventListener

<?php


namespace App\EventListener;

use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;

class LoginListener
{

    public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
    {
        $user = $event->getAuthenticationToken()->getUser();
        $session = $event->getRequest()->getSession();
        //TODO validate if that user is logged in
    }


}

Но я не могу получить, если пользователь вошел в другое устройство и закрыл сеанс, я нашел решение, но в Symfony 2.3 в здесь .

Может кто-нибудь объяснить мне решение в Symfony 4?

1 Ответ

0 голосов
/ 19 марта 2020

Короткий ответ: ты не можешь.

Более длинный ответ более сложный: у вашего сайта нет возможности узнать, какие устройства принадлежат анонимному пользователю; с точки зрения сервера все запросы выглядят так, как будто они поступают из случайных мест (которые они есть).

Однако, как только пользователь вошел в систему, вы можете ввести дополнительные ограничения. Хитрость заключается в том, как вы выдаете токены аутентификации и как связать их с пользовательской записью в вашем приложении. Есть много способов скинуть эту кошку, но все они включают отслеживание того, сколько аутентификаций было предоставлено учетной записи пользователя. Обычно запросы на аутентификацию отслеживаются с помощью IP-адреса пользователя и строки пользовательского агента из их браузера, чтобы отличать guish один из имен пользователя от другого. Например, когда вы входите в GMail, вы можете просматривать все логины, которые получили доступ к учетной записи - это может помочь вам определить мошеннический вход в систему, но также показывает, сколько устройств (или браузеров) было использовано для входа в систему.

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