Разрешить действие контроллера в symfony access cotrol - PullRequest
2 голосов
/ 20 октября 2019

У меня есть проект API в Symfony. Аутентификация обеспечивается токеном JWT. Я хочу разрешить 2 действия в контроллере, которые можно использовать без входа в систему.

  • / точка / {параметр} / elmeter
  • / точка / {параметр} / измерение

Я пытался разрешить управление доступом security.yaml безуспешно.

access_control:
        - { path: ^/api/point/.*/(elmeter|measurement)$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    /**
     * @param string $sign
     * @param Request $request
     *
     * @Route("/point/{sign}/elmeter", methods={"POST"}
     */
    public function postPointElmeterAction(string $sign, Request $request)
    {
        ...
    }

   /**
     * @param string $sign
     * @param Request $request
     *
     * @Route("/point/{sign}/measurement", methods={"POST"}, name="api_point_measurement")
     */
    public function postPointMeasurementAction(string $sign, Request $request)
    {
        ...
    }

Спасибо за каждый ответ.

1 Ответ

2 голосов
/ 20 октября 2019

Вам необходимо указать этот маршрут в разделе межсетевых экранов в security.yaml, например:

security:
    ...
    ...
    firewalls
        point:
            pattern: ^/api/point/.*/(elmeter|measurement)$
            stateless: true
            anonymous: true

    access_control:
    - { path: ^/api/point/.*/(elmeter|measurement)$, role: IS_AUTHENTICATED_ANONYMOUSLY }
...