代码之家  ›  专栏  ›  技术社区  ›  Jack B Nimble

在用户使用cakephp登录后,如何更改用户会话?

  •  1
  • Jack B Nimble  · 技术社区  · 17 年前

    我有

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

    从会话中检索当前用户。

    我想让管理员用户能够“扮演”客户。我希望在用户进入客户界面时能够在用户会话中替换客户ID。

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

    这不起作用,因为我找不到将$user数据推回到auth的方法

    3 回复  |  直到 17 年前
        1
  •  3
  •   duckyflip    17 年前

    这应该有效:

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

    请注意,如果您同时使用ACL和基于组的权限模型,这种仅更改客户ID的方法可能会产生一些副作用。

        2
  •  0
  •   weisjohn    17 年前

    如果您只是在会话中检查客户ID以确定该用户是否属于客户类型,而不是:

    $user['user'][客户ID']=4;

    我会尝试:

    $this->session->write('user.customer_id','4');

        3
  •  0
  •   dr Hannibal Lecter    17 年前

    尝试合并 $this->Auth->logout() 然后 $this->Auth->login() 和客户的数据。

    但是,如果您希望您的管理员能够在不重新输入其凭据的情况下返回其帐户,则需要实现其他逻辑。这没什么大不了的,但值得一提。