0

OTP を介して自分のアカウントを認証する必要があるユーザーがいます。認証のために OTP を入力すると、携帯電話番号が検証されます。認証されたら、強制的にログインさせたいと思います。つまり、手動でログインする必要はありません。したがって、このフォームの場合、基本的には次のとおりです。

if($model->validate())
{
   // Force Login
   $this->redirect(array('/site/index'));    
}

彼の資格情報 (つまり、彼の携帯電話番号) の 1 つだけを使用して、強制的にログインさせる必要があります。どうすればいいですか?

4

1 に答える 1

3

手順は、次のドキュメントで説明されていますCWebUser

  1. ユーザーは、認証に必要な情報を提供します。
  2. ユーザー提供の情報を使用して ID インスタンスが作成されます。
  3. IUserIdentity::authenticate を呼び出して、ID が有効かどうかを確認します。
  4. 有効な場合は、 を呼び出しCWebUser::loginてユーザーをログインさせ、ユーザー ブラウザを にリダイレクトしますreturnUrl

を実装する ID クラスが既にあるはずIUserIdentityです。通常、これは から派生したクラスCUserIdentityであり、構築時にユーザー名とパスワードを取ります。ここには大きな自由度があります。任意の方法で認証する独自のカスタム ID クラスから派生させずに使用することも、OTP で認証するメソッドから派生させてオーバーライドCUserIdentityすることもできます。CUserIdentityauthenticate

手順は上記とまったく同じです。

$identity = new MyIdentity(...); // you decide what params it takes
if ($identity->authenticate()) {
    $user = Yii::app()->user;
    $user->login($identity);
    $this->redirect($user->returnUrl);
}
于 2013-02-08T10:03:30.437 に答える