在 symfony 访问控制中允许控制器操作

Posted

技术标签:

【中文标题】在 symfony 访问控制中允许控制器操作【英文标题】:Allow controller action in symfony access cotrol 【发布时间】:2020-02-16 15:51:43 【问题描述】:

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

/point/param/elmeter /point/param/measurement

我试图在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)
    
        ...
    

感谢您的每一个回答。

【问题讨论】:

您使用哪个库进行 JWT 身份验证? github.com/lexik/LexikJWTAuthenticationBundle 但这很好用。当我在请求中调用带有令牌的操作时,我会得到响应。但我想在没有身份验证的情况下调用操作。 【参考方案1】:

您需要在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 

【讨论】:

以上是关于在 symfony 访问控制中允许控制器操作的主要内容,如果未能解决你的问题,请参考以下文章

在 Flask 中允许 CORS

如何在 symfony2 验证器中允许空值

如何在 Android WebView 中允许访问相机

测试每个页面不超过 Symfony 中允许的 SQL 计数?

在 MariaDB 10.3 中允许对特定用户进行外部访问

在 WebView [Android Studio] [Java] 中允许麦克风访问(权限)