Cakephp - получить идентификатор пользователя в контроллере при использовании аутентификации - PullRequest
17 голосов
/ 01 июля 2010

Кажется, что это двухэтапный процесс,

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

Разве где-то не установлена ​​переменная после входа пользователя? (Извините за глупый вопрос.)

Ответы [ 7 ]

32 голосов
/ 01 июля 2010

Я думаю, что вы можете сделать $uid = $this->Auth->user('id'); - проверьте API: http://api.cakephp.org/class/auth-component#method-AuthComponentuser

16 голосов
/ 04 октября 2013

В CakePHP есть несколько способов получить идентификатор пользователя из сеанса, вот несколько примеров

Чтобы получить идентификатор пользователя сеанса в контроллере, используйте:

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

Чтобы получить идентификатор пользователя сеанса в представлении, используйте: (Не рекомендуется, я бы установил это в контроллере)

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

Чтобы получитьИдентификатор пользователя сеанса в модели, используйте: (Не рекомендуется, но есть решение)

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

Я не рекомендую вышеупомянутое получить идентификатор пользователя сеанса из модели,Я бы передал его через контроллер, используя:

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

Вы также можете получить идентификатор пользователя сеанса через чистый php, используйте: (Хотя с использованием Cake вы должны придерживаться соглашений)

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

И есть еще подходы, это всего лишь несколько ...

10 голосов
/ 01 июля 2010

Попробуйте это:

$this->Auth->user('id')
5 голосов
/ 01 марта 2014

CakePhp 2.x:

Везде:

AuthComponent::user('id')

Внутри контроллера:

$this->Auth->user('id');
5 голосов
/ 20 августа 2012

Вы также можете получить информацию о пользователе из сеанса, если класс Auth вам недоступен.

$this->Session->read('Auth.User.id')
0 голосов
/ 15 августа 2018

$this->Session устарела

Используйте что-то вроде этого

$session = $this->request->session();
$user_id = $session->read('Auth.User.id');
0 голосов
/ 06 мая 2015

Это может быть бесполезно, но у меня возникла ошибка из-за $this->Auth->user(); Эта проблема была решена с помощью этого. Я не уверен в способе решения проблемы, но она возникла при вызове функции из модели в том же действии, что и я $this->Auth->user(); Использование AuthComponent::user('id') решило проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...