用户使用auth_key通过电子邮件地址进行身份验证

时间:2016-02-07 16:46:53

标签: php email authentication yii2

我尝试使用authkey属性注册后发送电子邮件。但我对用户的这个authkey有问题。在发送此电子邮件之前,我不知道为什么不保存这个。我的代码来自SignupForm:

 public function getSetPasswordLink() {
       $user = User::findOne([
                    'status' => User::STATUS_DELETED,
                    'email' => $this->email,

        ]);
        var_dump($user['auth_key']);
        exit();
        return Url::to(['registration/confirm', 'email' => $this->email, 'authkey' => $user['auth_key']], true);
    }

    public function sendEmail() {

        $status = Yii::$app->mailer->compose('registrationmail',['url' => $this->getSetPasswordLink()])
                ->setTo($this->email)
                ->setCharset('utf8')
                ->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->params['supportEmail']])
                ->setSubject(self::SUBJECT)
                ->send();

        return $status;
    }

我的函数sendEmail带有url,我尝试传递给视图。这个var_dum让我NUll。 MAybe我在我的RegistrationController中显示我的行动确认:

public function actionConfirm($email, $key) {

        $user = \common\models\User::find()->where([
                    'email' => $email,
                    'auth_key' => $key,
                    'status' => 0,
                ])->one();
        if (!empty($user)) {
            $user->status = 10;
            $user->save();
            Yii::$app->getSession()->setFlash('success', 'Success!');
        } else {
            Yii::$app->getSession()->setFlash('warning', 'Failed!');
        }
        return $this->goHome();
    }

所以我发送电子邮件,在这封电子邮件中,我将url传递给我的actionConfirm。如果用户单击此链接,他的状态将变为1而不是0.但我不知道为什么我的auth_key返回NULL。任何人都可以看到我的失败?

1 个答案:

答案 0 :(得分:0)

你的getSetPasswordLink中的

你的代码在返回之前退出.. auth_key链接......

a[i] = c[2*i+0];
b[i] = c[2*i+1];

这样你的sendEmail()就无法获得正确的发送值..