2013-03-30 5 views
0

Я извлек YiiPassword расширение в protected/components/YiiPasswordYiiPassword Расширение Использование

main.php:

. 
    . 
    . 
    'import'=>array(
      'application.models.*', 
      'application.components.*', 
      'application.components.YiiPassword.*', 
      'application.helpers.*', 

    ), 
    . 
    . 
    . 

User.php: (модель)

.  
. 
. 
public function behaviors() 
{ 
    return array(
     "APasswordBehavior" => array(
      "class" => "APasswordBehavior", 
      "defaultStrategyName" => "bcrypt", 
      "strategies" => array(
       "bcrypt" => array(
        "class" => "ABcryptPasswordStrategy", 
        "workFactor" => 14 
       ), 
       "legacy" => array(
        "class" => "ALegacyMd5PasswordStrategy", 
       ) 
      ), 
     ) 
    ); 
} 
. 
. 
. 

Ans также добавлены три thees полей в tbl_user:

соль - содержит для каждого пользователя соль используется для хеширования паролей

пароль - содержит хэш пароля (уже существуют)

passwordStrategy - содержит имя из стратегия нынешнего пароля для этого пользователя

needNewPassword - это логическое поле, которое определяет, должен ли пользователь изменить свой пароль или не

и теперь я только хочу использовать Bcrypt, как закодировать пароль пользователя и проверить его на пользовательском входе в систему?

ответ

0

решаемых

Следующий тест успешно выполнен, ABcryptPasswordStrategyTest.php:

<?php 
Yii::import("application.components.passwordStrategy.*"); 
Yii::import("application.models.*"); 

/** 
* Tests for the {@link ABcryptPasswordStrategy} class. 
* @author Charles Pick 
* @package packages.passwordStrategy 
*/ 
class ABcryptPasswordStrategyTest extends CTestCase 
{ 
    public function testEncode() 
    { 
     $user=User::model()->findByAttributes(array('username'=>'user')); 
     $strategy = new ABcryptPasswordStrategy(); 
     $strategy->getSalt(true); 

     $user->password = 'pass'; 
     $user->save(); 

     $this->assertTrue($user->verifyPassword("pass")); 
    } 
} 

more info

1

Вам просто нужно получить пользователя и вызвать метод verifyPassword! Описание этого метода:

Сравнивает данный пароль сохраненного пароля для данной модели

Так что вы могли бы сделать что-то вроде:

$user = User::model()->findByPK(1); 
if($user->verifyPassword("password")){ 
    //Password verified 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^