我在提前验证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}}';
}
答案 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规则以避免输入空白密码。