如何保护Symfony2 REST API

问题描述 投票:0回答:1

我将security.yml与access_control结合使用,以根据用户角色保护API路径。 这可以正常工作,但是如何保护/ api / project /:id等特定参数呢? 不同的用户有权访问不同的项目ID。 因此,必须进行数据库调用以检查该用户是否有权访问该项目。

我试图使用$ this-> denyAccessUnlessGranted('GET',$ projectId,'Unauthorized access!'); 在ProjectController中,该控制器将调用自定义Voter来检查数据库以及访问权限。

public function getProjectAction(Request $request, $id)
{
    $this->denyAccessUnlessGranted('GET', $id, 'Unauthorized access!');

这可行,但是仅在ProjectController中以及在API的许多部分中将此代码添加到10多个动作中似乎是不切实际的。

因此,我的问题是:用symfony2,fosUserBundle和fosRestBundle保护REST api的最佳实践是什么?

security symfony fosuserbundle fosrestbundle
1个回答
2
投票

我建议介绍安全选民。

http://symfony.com/doc/current/cookbook/security/voters_data_permission.html

还创建某种异常处理程序/侦听器,以捕获您的异常并做出特定的错误响应。

http://symfony.com/doc/current/cookbook/service_container/event_listener.html

© www.soinside.com 2019 - 2024. All rights reserved.