я разрабатываю symfony restful api с такими инструментами, как FosRestBundle, FosUserBundle и Lexik JWT для аутентификации api.
Мне нужно сохранять каждый успешный вход в мое приложение. Итак, я создал логин (user_id, loginDate), но я не знаю, как его использовать, потому что логин обрабатывается из Lexik.
Кто-нибудь знает, как я могу это сделать?
Спасибо
вам нужно сохранить как насчет логина пользователя?
Наш клиент хочет видеть статистику, например количество ежедневных входов в систему. Итак, у нас должна быть история входа в систему. Я знаю, что это бесполезная логика, но для нашего клиента это обязательная функция. Пожалуйста, не голосуйте против меня за потребности моего клиента.




Для этого можно использовать событие security.interactive_login. Более подробную информацию можно найти в официальной документации:
https://symfony.com/doc/current/components/security/authentication.html#authentication-events
Создайте слушателя и зарегистрируйте его:
namespace App\EventListener;
use App\Component\EntityManagerAwareTrait;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Http\SecurityEvents;
/**
* @package App\EventListener
*/
class SecuritySubscriber implements EventSubscriberInterface
{
/**
* @param EntityManagerInterface $em
*/
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return [
SecurityEvents::INTERACTIVE_LOGIN => 'onSecurityInteractiveLogin',
];
}
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event): void
{
$user = $event->getAuthenticationToken()->getUser();
if ($user instanceof User) {
$user->setLoginDate(new \DateTime());
$this->em->persist($user);
$this->em->flush();
}
}
}
вы имеете в виду просто регистрацию активности входа в систему? Потому что мне кажется, что сохранение данных входа в базу данных очень неудобно.