我正在创建一个apigility项目,我们将托管所有API。我们需要能够使用OAuth2进行身份验证,但我们无法弄清楚如何控制对某些API的访问,似乎一旦客户端进行身份验证,他们就可以使用我们的任何API,但我们希望将它们限制为仅使用特定的API我们定义。在阅读了apigility使用的OAuth2 library后,我看到有可以定义的范围,但我没有找到任何关于如何检查用户范围以查看他们是否具有访问权限的文档。我想知道这是否是限制访问某些API的最佳方法,以及如果设置它是如何设置,还是有更好的方法来控制访问?
答案 0 :(得分:3)
使用以下配方实现此功能......
https://github.com/remiq/apigility-zfc-rbac-recipe
它工作得非常好,只用了几个小时才能完成所有工作。
或者,您可以在Controller Action(资源方法)中进行检查
$identity = $this->getIdentity()->getAuthenticationIdentity();
$scope = $identity["scope"]
if (! in_array('admin', $scope)) {
return new ApiProblem(Response::STATUS_CODE_401, 'No Auth');
}
以上代码未经测试,但如果你想这样做,应该让你走上正确的道路