Yii2登录验证问题

时间:2014-11-11 05:23:32

标签: yii2

我在提前验证Yii2的密码方面遇到了麻烦。我收到以下错误

“用户名或密码不正确。”

我知道yii2使用哈希身份验证。我提供正确的密码,我记得从注册时起。

数据库中的我的密码字段总是空白,没有任何内容,但我的密码_hash和auth_key中有很多字符。

密码字段为空是否正常?或者这是注册过程中的错误吗?

这是我的用户型号代码

namespace common\models;

use Yii;
use yii\base\NotSupportedException;
use yii\behaviors\TimestampBehavior;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;


class User extends ActiveRecord implements IdentityInterface
{
      public static function tableName()
{
    return '{{%user}}';
}

1 个答案:

答案 0 :(得分:0)

存储密码时,您可以在保存用户详细信息之前在用户模型中使用以下功能

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

现在,当用户输入密码时,您可以使用以下代码验证它

if (Yii::$app->getSecurity()->validatePassword($password, $user->password) == true) {
    /* Password is valid */
} else {
    /* Invalid password */
}

关于空白密码,Yii2在将空白密码转换为哈希时是可以接受的,但允许用户输入空白密码是不好的做法。您必须在模型中添加validaiton规则以避免输入空白密码。