Cakephp 3.7.x Как получить данные пользователя? используя компонент аутентификации
Я использую CakePHP 3.7.2 с компонентом аутентификации
$user = $this->Authentication->getIdentity();
печатает:
object(Authentication\Identity) {
'config' => [
'fieldMap' => [
'id' => 'id'
]
],
'data' => object(App\Model\Entity\User) {
'id' => (int) 1,
'email' => 'aa.aaa@gmail.com',
...
}
}
я пытался $user->data
но это не работает
Как распечатать данные пользователя?
2 ответа
Итак, я понял это.
В классе User Entity
добавлять use Authentication\IdentityInterface;
а затем реализовать IdentityInterface.
class User extends Entity implements IdentityInterface
{
blablabla...
yale yale yale ...
Теперь вы можете распечатать:
$user = $this->Authentication->getIdentity();
debug($user->id);
Согласно документации по компоненту аутентификации
Идентификационный объект возвращается службой и становится доступным в запросе. Объект предоставляет метод getIdentifier(), который можно вызывать для получения идентификатора текущего журнала в качестве идентификатора.
Вы можете использовать это соответственно, как показано ниже, чтобы получить пользовательские данные:
// Service
$identity = $authenticationService
->getIdentity()
->getIdentifier()
// Component
$identity = $this->Authentication
->getIdentity()
->getIdentifier();
// Request
$identity = $this->request
->getAttribute('identity')
->getIdentifier();
Идентификационный объект предоставляет ArrayAccess, а также метод get() для доступа к данным. Настоятельно рекомендуется использовать метод get() для доступа к массиву, поскольку метод get знает о сопоставлении полей.
Например, Чтобы получить доступ к электронной почте и имени пользователя с удостоверением личности, вы можете использовать приведенный ниже код.
$identity->get('email'); // to access email
$identity->get('username'); // to access username
Ссылка: Аутентификация -> Документы -> Идентификационный объект
Надеюсь, это поможет.
Я использую AuthComponent в CakePHP 4.xxx.
Я могу получить данные пользователя, т.е. в представлении с
$user = $this->getRequest()->getAttribute('identity');
Я нашел информацию по адресу: http://gotchahosting.com/blog/category/cakephp/4002624
Может быть, это поможет тому, кто ищет информацию об этом в CakePHP4