APIPlatform: AccessDeniedException от UserCheck, кажется, не перехватывает исключение, пока активирован параметр exception_to_status - PullRequest
1 голос
/ 05 июня 2019

Я использую 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>

Есть ли кто-нибудь, кто имел подобную проблему?

Спасибо за чтение,

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