2014-11-11 2 views
0

Yii2의 비밀번호 인증을 미리 해두 고 있습니다. 다음 오류가 발생합니다.Yii2 로그인 인증 문제

"잘못된 사용자 이름 또는 암호"

yii2는 해시 인증을 사용합니다. 가입 당시부터 기억하고있는 정확한 비밀번호를 제공하고 있습니다.

데이터베이스의 내 암호 필드는 항상 비어 있지만 거기에는 아무 것도 없지만 password_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

사용자가 코드를 작성하는 것이 좋습니다! –

+3

비밀번호 필드가있는 이유는 무엇입니까? 해시가 필요합니다. – Alex

+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 규칙을 추가해야합니다.