2016-02-11 52 views
0

我正在構建一個REST數據庫連接系統,用戶只能根據client_id或user_id創建/獲取/查詢自己的數據並不重要。我成功實現了oAuth和Mapper/Resource對象,以便與我的實體/集合一起使用。在使用訪問令牌成功發出oAuth請求後,是否有建議的方式來獲取client_id或user_id,以便我可以根據誰發出請求來過濾數據庫查詢?基於oAuth請求的Apigility自定義Db過濾器

回答

1

已解決。一個簡單的解決方案是在API配置中將\ ZF \ MvcAuth \ Identity \ AuthenticatedIdentity的實例注入到服務映射器中。

if ($sm->has('api-identity')) { 
    $mapper->setAuthenticatedIdentity($sm->get('api-identity')); 
} else { 
    $mapper->setAuthenticatedIdentity(new \ZF\MvcAuth\Identity\AuthenticatedIdentity()); 
} 

在Mapper中添加setter/getters。

protected $authenticatedIdentity; 

public function setAuthenticatedIdentity(\ZF\MvcAuth\Identity\AuthenticatedIdentity $authenticatedIdentity) 
{ 
    $this->authenticatedIdentity = $authenticatedIdentity; 
} 

protected function getAuthenticatedIdentity() 
{ 
    return $this->authenticatedIdentity; 
} 

最後。

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