@Kirill-Gorelov
С ума с IT

Symfony security?

Есть базовое приложение на симфони с авторизацией. Тут все ок.
Хотим сделать апи авторизацию по HTTP Authorize. Тут тоже ок.

Но столкнулись с такой проблемой, что есть если сейчас неавторизован пользователь или делаем проверки пермишенов через атрибут IsGranted отдается html контент, а нужно сделать json.

Делать такие проверки в контроллерах не хочется, хочется что бы это работало декларативно.
Хочется что бы это было под капотом. Получается что оно работает, но отдает хтмл, а не json

Что нужно доработать и как, что бы сделать как нам нужно?
Вот наш security.yaml
security:
    enable_authenticator_manager: true

    password_hashers:
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'

    providers:
        app_user_provider:
            entity:
                class: App\Entity\User
                property: email

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        api:
            pattern: ^/api
            stateless: true
            provider: app_user_provider
            http_basic:
                realm: "API"

        main:
            lazy: true
            provider: app_user_provider
            custom_authenticator: App\Security\AppUserAuthenticator
            logout:
                path: app_logout

            remember_me:
                secret: '%kernel.secret%'
                lifetime: 604800
                path: /
                always_remember_me: false

    access_control:
        - { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
        - { path: ^/admin/*, roles: IS_AUTHENTICATED_FULLY }
        - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/logout, roles: IS_AUTHENTICATED_ANONYMOUSLY }

    access_decision_manager:
        strategy: affirmative
        allow_if_all_abstain: false

when@test:
    security:
        password_hashers:
            Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
                algorithm: auto
                cost: 4 # Lowest possible value for bcrypt
                time_cost: 3 # Lowest possible value for argon
                memory_cost: 10 # Lowest possible value for argon
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы