0

我有一个用户需要通过 OTP 验证他的帐户。为了进行身份验证,他填写了他的 OTP 并验证了手机号码。一旦通过身份验证,我想强制他登录。也就是说,他仍然不必手动登录。所以,对于这种形式,我基本上有:

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

只使用他的一个凭据(即他的手机号码),我需要强制他登录。我该怎么做?

4

1 回答 1

3

该过程在以下文档中进行了说明CWebUser

  1. 用户提供认证所需的信息。
  2. 使用用户提供的信息创建身份实例。
  3. 调用 IUserIdentity::authenticate 以检查身份是否有效。
  4. 如果有效,调用CWebUser::login登录用户,并将用户浏览器重定向到returnUrl.

您应该已经有一个实现IUserIdentity. 通常这是一个派生自 的类CUserIdentity,它在构造时采用用户名和密码。这里有很大的自由度:您可以决定不从CUserIdentity您自己的自定义身份类派生并使用您希望的任何身份验证方式,或者您可以派生CUserIdentity并覆盖该authenticate方法以使用 OTP 进行身份验证。

该过程将与上述完全相同:

$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 回答