Доступность сеанса в модели и поведении

Я работаю в Cake 3.x и мне нужен идентификатор пользователя, вошедшего в систему. В Cake 2.x вы могли получить это через сессию или AuthComponent (насколько грязно)

AuthComponent::user();

Но теперь в Cake 3.x... Как я могу получить чистый доступ к Сессии, чтобы получить идентификатор пользователя?

Я нашел: http://book.cakephp.org/3.0/en/development/sessions.html Но там говорится, что сессию легко получить из контроллеров, компонентов, представлений и многого другого...

РЕДАКТИРОВАТЬ: очень очень грязное решение может быть, чтобы получить $_SESSION переменная. CakePHP не рекомендует эту опцию... Итак, я предпочитаю другое решение:)

Спасибо!

2 ответа

Вам нужно будет вручную передать значение или поместить его в объект, который доступен глобально. Проверьте этот плагин, чтобы получить представление о том, как это можно сделать чистым способом, также вероятно, что то, что этот плагин реализует, является тем, что вы пытались сделать в любом случае:)

https://github.com/hmic/cakephp-blame

Изменить: я только что проверил исходный код в этом плагине, и похоже, что он изменил подход к тому, с которым я не согласен. Этот другой плагин ( https://github.com/ceeram/blame) содержит оригинальную реализацию, которую я имел в виду.

Что он делает, так это присоединяет событие к вашим моделям, чтобы текущий вошедший в систему пользователь передавался в события таблицы и мог быть прочитан любым поведением.

Вы можете получить доступ к сессии, используя: Cake\Network\Session;

use Cake\Network\Session;

Например:

public function getSessionUser() {
    $session = new Session();
    return $session->read('Auth.User');
}
Другие вопросы по тегам