2

私のアプリケーションビューから、現在のユーザーをプログラムでログアウトし、その直後に別のユーザーにログインする必要があります。

2 番目のユーザーを別の CHttpSession (別のセッション ID など) にログインしたい。セキュリティ上の理由から必要です。

これを Yii フレームワークに実装する方法は?

以下のコード

$oSession->destroy(); $oSession->open();

期待どおりに動作しません..

4

2 に答える 2

5

ユーザーになりすまそうとしているようです:

  1. 別の既知のユーザーとしてログインできるようにする関数を UserIdentity に作成します。

    protected function logInUser($user)
    {
        if($user)
        {
            $this->_user = $user;
            $this->_id=$this->_user->id;
            $this->setState('name', $this->_user->name);
            $this->errorCode=self::ERROR_NONE;
        }
    }
    
  2. コントローラーで、この関数を呼び出して UserIdentity オブジェクトを取得し、Yii の CWebUser ログインを使用します。

    $ui = null;
    $user = User::model()->findByPk($userId);
    if($user)
    {   
        $ui = new UserIdentity($user->email, "");
        $ui->logInUser($user);
    }
    Yii::app()->user->login($ui, 0);
    

このコントローラーのアクションを許可されていないユーザーから保護することを忘れないでください。

于 2012-10-15T16:52:18.320 に答える
1

可能なトリッキーな方法(テスト済み):

session_unset();
Yii::app()->user->id = $the_new_id;

上記のコードを実行すると、ページに何も表示されないため、ブラウザをリダイレクトする必要がある場合があります。

$this->redirect('somewhere');

次のページ読み込み時に、$the_new_id を持つユーザーがログインします

于 2012-10-15T19:10:01.520 に答える