Я создаю систему, подключенную к REST DB, в которой пользователи могут создавать/извлекать/запрашивать только свои собственные данные на основе client_id или user_id, не имеет значения. Я успешно реализовал объекты oAuth и Mapper/Resource, чтобы они соответствовали моей сущности/коллекции. После успешного запроса oAuth с использованием токена доступа есть ли рекомендуемый способ получить client_id или user_id, чтобы я мог фильтровать запросы к базе данных в зависимости от того, кто сделал запрос?
Пользовательский фильтр базы данных Apigility на основе запроса oAuth
Ответы (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 добавьте сеттер/геттер.
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()));
person
Tom Shaw
schedule
12.02.2016