0

したがって、「is_confirmed」のフィールドを持つユーザーテーブルがあることを考えると、リダイレクトを使用して、「is_confirmed」が 0 のユーザーを単一の URL に送り込みたい...

一度だけ実装する必要があるように、このチェックを行う方法はありますか? 良い例は、ログインユーザーを必要とするページがユーザーをログインページに強制する方法のデフォルトのユーザー機能だと思います...

4

1 に答える 1

0

これを特に自分で試したことはありませんが、Yii のドキュメントに基づいて、値に基づいてログイン アクション内でユーザーをリダイレクトする可能性があります。ユーザーが確認された場合は、CWebUser::login(..) メソッドを呼び出して ID を永続ストレージに保存し、returnUrl リダイレクトを使用します。それ以外の場合、ユーザーは確認されないため、その部分をスキップしてin limboページをレンダリングします。

SiteController::actionLogin() 内で、おそらく次のようなことを行います (さらに、UserIdentity コンポーネントには、確認フィールドの値を返すメソッドが必要です)-

$identity = new UserIdentity();
if($identity->authenticate()) {
  if($identity->isConfirmed() == 1) {
    Yii::app()->user->login($identity);
    $this->redirect(Yii::app()->user->returnUrl);
  } else {
    $this->render('not_yet_confirmed_view');
  }
} else {
  throw new CHttpException(500,'Internal Server Error. Could not authenticate.');
}

編集 - 偶発的な余分な CWebUser::login() を削除し、UserIdentity コンポーネントには少しだけ追加のスマートが必要であることを明確にしました。

于 2013-03-14T20:34:37.800 に答える