3

コマンドシーケンスを使用することにしました:

Yii::app()->user->setFlash('success', "Successful!");
Yii::app()->user->logout();
$this->redirect(array('user/login'));

ユーザーはログアウトされ、リダイレクトされましたが、Setflash は機能しません。また、2 つの frist コマンドの順序を変更しようとしましたが、同じ問題が発生しました。ユーザーをログアウトしなければ、Setflash は正常に動作します。

両方のコマンドを機能させるにはどうすればよいですか?

4

3 に答える 3

1

これを使用できると思います:

public function afterLogout() {
    // Create new session
    $session=new CHttpSession;
    $session->open();

    // Set flash message
    Yii::app()->user->setFlash('success', 'You are logged out successfully.');

    // Prepare target URL after logout
    $continue_url = Yii::app()->request->hostInfo . Yii::app()->createUrl('');

    // Redirect
    CController::redirect($continue_url);
}

WebUser コンポーネント内に配置します。

于 2013-03-23T14:33:25.867 に答える
0

Flash メッセージはセッションに保存されます。ユーザーをログに記録すると、ユーザーの現在のセッションが破棄されます。session_destroy() が呼び出されたら、新しいセッション ID を生成してこれを機能させるために、session_start() を再度呼び出す必要があります。Yii はおそらくそうしません。

ログアウトが機能したことを示す「成功」メッセージを表示することが重要な場合は、ユーザーを「ログアウト成功」ページにリダイレクトします。または、Yii がログアウトを実行する方法をオーバーライドすることを検討することもできますが、お勧めしません。

于 2012-11-13T14:45:22.377 に答える