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.Admin.idのようなsthをセッションに保存します(元のAuth.User.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 に答える