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

Другие вопросы по тегам