我有
$user = $this->Auth->user();
从会话中检索当前用户。
我想让管理员用户能够“充当”客户。我希望能够在进入客户界面时更换用户会话中的customer_id。
$user['User']['customer_id'] = 4;
这不起作用,因为我找不到将$ user数据推回Auth
的方法答案 0 :(得分:3)
这应该有效:
$this->Session->write('Auth.User.customer_id', 4);
请注意,如果您还使用基于Acl和组的权限模型,这种仅更改customer_id的方法可能会产生一些副作用。
答案 1 :(得分:0)
如果您只是检查会话上的customer_id以确定该用户是否属于customer类型,而不是:
$ user ['User'] ['customer_id'] = 4;
我会尝试:
$ this-> Session-> write('User.customer_id','4');
答案 2 :(得分:0)
尝试将$this->Auth->logout()
和$this->Auth->login()
与客户的数据合并。
但是,如果您希望管理员能够在不再次输入凭据的情况下返回其帐户,则需要实施其他逻辑。这不是一件容易的事,但值得一提。