4

我正在创建一个 cakephp 应用程序,它应该允许管理员在不知道密码的情况下以站点中的任何用户身份登录。基本上,如果管理员想以经理身份登录,他只需单击一个按钮即可以经理身份登录。

谢谢你

4

2 回答 2

8

我称之为用户切换。我使用我的 DirectAuth 实现了这个: https ://github.com/dereuromark/tools/blob/master/Controller/Component/Auth/DirectAuthenticate.php

但你也可以简单地

a) 以管理员身份登录

b)有一个包含所有用户的表单来选择您要切换到的用户

c) 通过 POST 切换,读取用户 + $this->Auth->login($userData)

传递数据的 login() 将覆盖当前会话数据,因此会自动以该用户身份登录。只需确保只有管理员角色才能访问切换操作。

旁注:

  • 如果您希望能够切换回来(将记住原始的 Auth.User.id),则在会话中存储 Auth.Admin.id 之类的东西 - 如果存在,则此 id 也可以访问切换操作以跳回行政。

  • 使用此 Auth.Admin.id 来识别您当前是真人还是假人。如果您不想触发某些事情,例如“在线活动更新”或“消息读取”等,这很方便,只有真正的用户应该 IMO。这样你就可以防止这种情况。

于 2012-12-01T10:57:29.077 回答
1

您可以简单地使用以下代码。以前的管理员会话将被覆盖。此外,通过在会话中使用 is_manager_login,您可以在管理员注销为管理员时自动登录管理员。

$manager_info = $this->User->find('first',
                                        array(
                                             'conditions' =>array('User.email'=>$managerEmail)
                                             )
                             );  

    if (!empty($manager_info))
     {

                    $this->Auth->login($manager_info['User']);
                    $this->Session->write('is_manager_login')=true;


    }
于 2016-02-16T05:30:37.950 回答