Cakephp 3.7.x Как получить данные пользователя? используя компонент аутентификации - PullRequest
0 голосов
/ 07 января 2019

Я использую 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 ]

0 голосов
/ 07 января 2019

Итак, я понял это.

В классе User Entity

Добавить use Authentication\IdentityInterface;

, а затем реализуйте IdentityInterface.

class User extends Entity implements IdentityInterface
{

blablabla...
yale yale yale ...

Теперь вы можете напечатать:

 $user = $this->Authentication->getIdentity();   
 debug($user->id);
0 голосов
/ 07 января 2019

Согласно документации по компоненту аутентификации

Идентификационный объект возвращается службой и становится доступным в запрос. Объект предоставляет метод 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

Ссылка: Аутентификация -> Документы -> Идентификационный объект

Надеюсь, это поможет.

...