web-dev-qa-db-fra.com

Cakephp - Obtenir l'identifiant de l'utilisateur dans le contrôleur lors de l'utilisation de Auth

Cela ressemble à un processus en deux étapes pour obtenir cela,

    $u = $this->Auth->user();
    $uid = $u['User']['id'];

N'y a-t-il pas une variable définie quelque part une fois qu'un utilisateur est connecté? (Désolé pour la question stupide.)

16
Owen

Je pense que vous pouvez faire $uid = $this->Auth->user('id'); - consultez l’API: http://api.cakephp.org/class/auth-component#method-AuthComponentuser

31
Leo

Dans CakePHP, il existe plusieurs façons d'obtenir l'ID utilisateur de la session, en voici quelques exemples.

Pour obtenir l'ID utilisateur de la session dans le contrôleur, utilisez:

$uid = $this->Auth->User('user_id');

Pour obtenir l'ID utilisateur de la session dans une vue, utilisez: (Non recommandé, je le définirais dans le contrôleur)

$uid = $this->Session->read('Auth.User.id');

Pour obtenir l'ID utilisateur de la session dans un modèle, utilisez: (non recommandé, mais une solution)

$uid = CakeSession::read('Auth.User.id');

Je ne recommande pas ce qui précède d'obtenir l'ID utilisateur de la session à partir du modèle. Je le transmettrais via le contrôleur. Utilisez:

$this->Model->function($uid);

Vous pouvez également obtenir l'ID utilisateur de la session via php pur, utilisez: (Bien qu'avec Cake, vous devriez vous en tenir aux conventions)

$uid = $_SESSION['Auth']['User']['id'];

Et il y a plus d'approches, c'est juste quelques-unes ...

16
Brett Stewart

Essaye ça:

$this->Auth->user('id')
10
santiagobasulto

Vous pouvez également obtenir les détails de l'utilisateur à partir de la session si la classe Auth n'est pas disponible.

$this->Session->read('Auth.User.id')
5
472084

CakePhp 2.x:

Nulle part:

AuthComponent::user('id')

À l'intérieur d'un contrôleur:

$this->Auth->user('id');
5
Ankan-Zerob

$this->Session est obsolète

Utilisez quelque chose comme ça

$session = $this->request->session();
$user_id = $session->read('Auth.User.id');
0
Simon

Cela peut ne pas être utile, mais j'avais une erreur due à $this->Auth->user();. Ce problème a été résolu en utilisant ceci à la place. Je ne suis pas sûr de la route du problème, mais il est apparu lors de l'appel d'une fonction depuis un modèle dans la même action que lorsque j'ai utilisé $this->Auth->user(); L'utilisation de AuthComponent::user('id') a résolu le problème.

0
AlbertMarkovski