我有一个API,我希望切换到使用symfony,到目前为止我看到的一个大挑战是防火墙非常严格,几乎每个示例都假设我希望保护所有/api或所有/secure,但我有一个控制器混合的情况。
例如,/user/create
将在身份验证令牌下受到保护,但/user/webhook
是一个公开可用的端点,不需要令牌即可访问。
我怎样才能让防火墙在这种设置下运行良好,而不需要改变一大堆端点呢?
理想情况下,symfony有一个auth属性,我可以标记到我希望被保护的动作,这样它就像路由一样被控制。
我希望使用symfony的最新版本(这篇文章是6.2)
感谢任何关于解决方案的指导。
2条答案
按热度按时间2sbarzqh1#
您可以在
security.yaml
中使用regex指定access_control
规则。顺序很重要,因此您需要指定从最具体(路径)到不太具体的规则:在这种情况下,访问
/user/create
和ROLE_ADMIN
是必需的。以/user
开头的所有其他路径(如/user/webhook
)都将是可访问的公共路径。您可以根据需要添加尽可能多的规则(请参阅https://symfony.com/doc/current/security.html#allowing-unsecured-access-i-e-anonymous-users)。要使用另一种方法,如果您想直接在控制器中管理安全性,则可以使用特定的方法和属性:https://symfony.com/doc/current/security.html#securing-controllers-and-other-code
7lrncoxx2#
使用
access_control
是控制站点大部分内容访问的一种简单但有效的方法。如果需要更细粒度的权限,可以为每个控制器或每个控制器类声明所需的权限。
例如:
有关详细信息,请参见Using Expressions in Security Access Controls。