Как изменить сеанс пользователя после того, как пользователь войдет в систему с CakePHP?

У меня есть

$user = $this->Auth->user();

который извлекает текущего пользователя из сеанса.

Я хочу, чтобы пользователь-администратор мог «действовать как» клиент. И я надеялся, что смогу просто заменить customer_id в сеансе пользователя, когда они входят в интерфейс клиента.

$user['User']['customer_id'] = 4;

Это не работает, потому что я не могу найти способ вернуть данные $user обратно в Auth.


person Jack B Nimble    schedule 14.05.2009    source источник


Ответы (3)


Это должно работать:

$this->Session->write('Auth.User.customer_id', 4);

Обратите внимание, что такой подход простого изменения customer_id может иметь некоторые побочные эффекты, если вы также используете Acl и модель разрешений на основе групп.

person duckyflip    schedule 14.05.2009

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

$user['User']['customer_id'] = 4;

Я бы попробовал:

$this->Session->write('User.customer_id', '4');

person weisjohn    schedule 14.05.2009
comment
Отсутствует аутентификация для Auth.User.customer_id. - person Jack B Nimble; 16.05.2009

Попробуйте объединить $this->Auth->logout(), а затем $this->Auth->login() с данными клиентов.

Однако вам необходимо реализовать дополнительную логику, если вы хотите, чтобы ваш администратор мог вернуться в свою учетную запись без повторного ввода своих учетных данных. Это не ежу понятно, но стоит упомянуть.

person dr Hannibal Lecter    schedule 14.05.2009