オープンパスワードバリデーターを書かないでください。安全ではありません。
Yii2 では、 SecurityコンポーネントvalidatePassword
のメソッドを使用できます。
メソッドによるパスワードのデータベース ハッシュへの最初の格納setPassword
:
/**
*
* @param string $password WARNING! OPEN PASSWORD!
*/
public function setPassword($password)
{
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
モデルにはメソッドが必要ですvalidatePassword
:
/**
* @param string $password WARNING! OPEN PASSWORD!
*
* @return boolean
*/
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password, $this->password_hash);
}
または、User
モデルをフォームとして使用する場合は、次のように記述できます。
/**
* @inheritdoc
*/
public function rules()
{
return [
...
['password', 'validatePassword']
];
}
/**
* @param string $attribute attribute name
* @param array $params Additional params
*/
public function validatePassword($attribute, $params)
{
if (Yii::$app->security->validatePassword($this->$attribute, $this->password_hash) == false) {
$this->addError($attribute, Yii::t('frontend', 'Incorrect password'));
}
}