2014-12-28 5 views
2

Хотелось бы узнать, как генерируется пароль hash?Yii2 password hash

// This is my code: 

$email="[email protected]"; 
$password="mypassword"; 

// How to get password_hash variable? 

$user = User::find()->where(['email'=>$email, 'password_hash'=>$password_hash])->one(); 
if(isset($user)){ 
    echo "there is"; 
} else { 
"Sorry!"; 
} 

спасибо.

+0

'User :: find() -> где (['email' => $ email, 'password_hash' => $ password_hash]) -> one();' Эта привычка не защищена с помощью SQL-инъекции. Мы должны найти модель, а затем вызвать функцию validatePassword для проверки модели пользователя. Ответ на Pheagey. –

ответ

-4

Я использую хэш с md5, но я создать функцию в пользовательской модели

public function validatePassword($password) 
{ 
    return $this->PASSWORD === md5($password); 
} 
+1

md5 крайне небезопасен. Я бы либо использовал новую встроенную функцию password_hash PHP, либо yii \ base \ Security :: generatePasswordHash. –

+1

Это ответ: '$ user = Пользователь :: find() -> где (['email' => $ email]) -> one(); if (! $ User) { // Неправильный email } elseif (! Yii :: $ app-> security-> validatePassword ($ password, $ user-> password_hash)) { // Неверный пароль } else { // Ok } ' – Nedim

+0

... Скажите, пожалуйста, вы больше не делаете этого. Используйте встроенные криптографические методы. MD5 заставит вас скомпрометировать. Простой хеш MD4/SHA1 уже не является безопасной формой шифрования. –

0
 
    public function verifyPassword($password) 
    { 
     if(md5($password) === $this->password) 
      return TRUE; 
     else 
      return FALSE; 
     //return Yii::$app->security->validatePassword($password, $this->password); 
    } 

    public function beforeSave($insert) 
    { 
     // hash new password if set 
     if ($this->newPassword) { 
      //$this->password = Yii::$app->security->generatePasswordHash($this->newPassword); 
      $this->password = md5($this->newPassword); 
     } 

     // convert ban_time checkbox to date 
     if ($this->ban_time) { 
      $this->ban_time = date("Y-m-d H:i:s"); 
     } 

     // ensure fields are null so they won't get set as empty string 
     $nullAttributes = ["email", "username", "ban_time", "ban_reason"]; 
     foreach ($nullAttributes as $nullAttribute) { 
      $this->$nullAttribute = $this->$nullAttribute ? $this->$nullAttribute : null; 
     } 

     return parent::beforeSave($insert); 
    } 
+0

MD5 - не лучший выбор –

+0

^- MD5 - ужасный выбор. –