Apigility 基于 oAuth 请求的自定义 db 过滤器



我正在构建一个REST DB连接系统,用户只能根据client_id创建/获取/查询自己的数据,user_id无关紧要。我已经成功地实现了 oAuth 和映射器/资源对象,以配合我的实体/集合。使用访问令牌成功发出 oAuth 请求后,是否有推荐的方法来获取client_id或user_id以便我可以根据发出请求的人员筛选数据库查询?

已解决。一个简单的解决方案是在 API 配置中将 \ZF\MvcAuth\Identity\AuthenticatedIdentity 的实例注入到服务映射器中。

if ($sm->has('api-identity')) {
    $mapper->setAuthenticatedIdentity($sm->get('api-identity'));
} else {
    $mapper->setAuthenticatedIdentity(new ZFMvcAuthIdentityAuthenticatedIdentity());
}

在映射器中添加二传手/获取器。

protected $authenticatedIdentity;
public function setAuthenticatedIdentity(ZFMvcAuthIdentityAuthenticatedIdentity $authenticatedIdentity)
{
    $this->authenticatedIdentity = $authenticatedIdentity;
}
protected function getAuthenticatedIdentity()
{
    return $this->authenticatedIdentity;
}

最后。

print_r(get_class_methods($this->getAuthenticatedIdentity()));

最新更新