Я использую APIPlatform v2.4.Я реализовал аутентификацию JWT, и все работает отлично.Но я хочу добавить проверку для входа в систему: если пользователь неактивен, я хочу заблокировать доступ, поэтому я использую UserCheck в соответствии с поваренной книгой synfony:
https://symfony.com/doc/current/security/user_checkers.html
Итак, я создалAccessDeniedException и он отлично работает.
use Symfony\Component\Finder\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\Exception\AccountStatusException;
use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
use Symfony\Component\Security\Core\User\UserCheckerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class UserChecker implements UserCheckerInterface
{
public function checkPreAuth(UserInterface $user)
{
if (!$user instanceof AppUser) {
return;
}
}
public function checkPostAuth(UserInterface $user)
{
if (!$user instanceof AppUser) {
return;
}
if ($user->getIsActive() == false) {
throw new AccessDeniedException('Inactive account');
}
}
Но я хочу преобразовать это AccessDeniedException в ошибку 404, как в документации apiplatform:
https://api -platform.com / docs/ core / errors / # обработка ошибок
Поэтому я добавляю эту настройку конфигурации в свой api_platform.yaml:
error_formats:
jsonproblem: ['application/problem+json']
exception_to_status:
Symfony\Component\Finder\Exception\AccessDeniedException: 400
Но ничего не делать ... когда я пытаюсьвойти в мое приложение У меня есть ошибка HTML:
<html>
<head>
<meta charset="UTF-8" />
<meta name="robots" content="noindex,nofollow" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title> Inactive account (500 Internal Server Error)
</title>
Есть ли кто-нибудь, кто имел подобную проблему?
Спасибо за чтение,