首页 > 解决方案 > 在 symfony 访问控制中允许控制器操作

问题描述

我在 Symfony 中有一个 API 项目。身份验证由 JWT 令牌保护。我想在控制器中允许 2 个操作,无需登录用户即可使用。

我试图允许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)
    {
        ...
    }

谢谢你的每一个答案。

标签: phpapisymfonycontrollerfosrestbundle

解决方案


您需要在防火墙部分中指定此路由,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 }

推荐阅读