Cakephp - получить идентификатор пользователя в контроллере при использовании Auth

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

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

Не существует ли какой-либо переменной где-то после входа пользователя в систему? (Извините за немой вопрос.)

Ответы

Ответ 2

В 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'];

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

Ответ 3

Попробуйте следующее:

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

Ответ 4

CakePhp 2.x:

Anywhere:

AuthComponent::user('id')

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

$this->Auth->user('id');

Ответ 5

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

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

Ответ 6

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