Yii2 基本验证密码

Yii2 basic validate password

在我创建的用户控制器上,我创建了它以像注册一样使用它,我创建了

public function actionCreate()
    {
        $model = new Userlogin();
        $model->password = null;

        if ($model->load(Yii::$app->request->post()) ) {

            $model->password = Yii::$app->getSecurity()->generatePasswordHash($model->password);                

            $model->save();
            return $this->redirect(['view', 'id' => $model->uid]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

有效,它对密码进行哈希处理,但我不知道如何验证密码并使其在登录时有效我读过我必须使用这个

if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
    // all good, logging user in
} else {
    // wrong password
}

但我不知道如何使用它或必须在哪里使用它

恕我直言,代码:

if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
    // all good, logging user in
} else {
    // wrong password
}

可用于 POST 用户登录时的方法,在“// 一切正常,用户登录”中,您将使用 Web Session 做一些事情,为指定用户保存会话,然后是的,用户登录,

之后可以使用Session进行检查,"is user are logged in ?"等,

这里有一些关于 Yii 会话处理的好东西 link:http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html

我为处于相同情况的人找到了解决方案

在创建操作中

public function actionCreate()
    {
        $model = new Userlogin();

        if ($model->load(Yii::$app->request->post()) ) {

            $model->password = Yii::$app->security->generatePasswordHash($model->password);

            $model->save();
            return $this->redirect(['view', 'id' => $model->uid]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

并在用户模型更改中

/**
     * Validates password
     *
     * @param string $password password to validate
     * @return bool if password provided is valid for current user
     */
    public function validatePassword($password)
    {
        return $this->password === $password;
    }

/**
     * Validates password
     *
     * @param string $password password to validate
     * @return bool if password provided is valid for current user
     */
    public function validatePassword($password)
    {
        return Yii::$app->getSecurity()->validatePassword($password, $this->password);
    }

此解决方案来自:

我使用 Userlogin 作为用户模型,但如果有人使用用户模型,它在用户模型中

创建新操作,将其命名为登录 确保从 db

获取用户哈希密码
public function actionLogin() {


    $hash = User::find()->where('username='.$_POST['username'])->One();

    if (Yii::$app->getSecurity()->validatePassword($_POST['password'], $hash->password_hash)) {
        // all good, logging user in
    } else {
        // wrong password
    }

    }