Auth в Yii Framework

Я не знаю, почему authenticate () не работает в этом простом примере:

Это одна запись из моего пользователь Таблица

запись

модель / User.php

class User extends CActiveRecord
{
public $id;
public $name;
public $lastname;
public $login;
public $password;
public $date;

public static function model($className = __CLASS__)
{
return parent::model($className);
}

public function tableName()
{
return 'user';
}

public function attributeLabels()
{
return array(
'id' => 'ID',
'name' => 'Imię',
'lastname' => 'Nazwisko',
'login' => 'Login',
'password' => 'Hasło',
'date' => 'Data rejestracji',
);
}

public function rules()
{
return array(
array('name','required'),
array('lastname','required'),
array('login','required'),
array('password','required'),
array('date','default',
'value'=>new CDbExpression('NOW()'),
'setOnEmpty'=>false,'on'=>'insert')
);
}
}

модель / UserIdentity.php

class UserIdentity extends CUserIdentity
{
private $_id;

public function authenticate()
{
$record = user::model()->findAllByAttributes(array('login' => $this->username));
if($record === null)
{
$this->errorCode = self::ERROR_USERNAME_INVALID;
}
else if($record->password !== md5($this->password))
{
$this->errorCode=self::ERROR_PASSWORD_INVALID;
}
else
{
$this->_id = $record->id;
$this->errorCode = self::ERROR_NONE;
}
return !$this->errorCode;
}

public function getId()
{
return $this->_id;
}

}

Контроллер / UserController.php

[...]
public function actionLogin()
{
$username = 'janek';
$password = '1234';
$identity=new UserIdentity($username,$password);
if($identity->authenticate())
{
echo $identity;
}
else
{
echo "NOT OK";
}

}
[...]

и когда запрашивается действие входа в систему, то всегда отображаются НЕ ОК. Я изменяю пример из yii doc.

1

Решение

Проблема в том, что пароль в вашей базе данных не зашифрован, в соответствии с данными, которые вы представили.

В этом случае перепишите свой чек как

else if($record->password !== $this->password)

вместо

else if($record->password !== md5($this->password))

Однако вы должны сохранять свой пароль в зашифрованном виде. Из многих вариантов использование md5 обычно не считается безопасным вариантом. Взгляните на официальную документацию Yii, в которой показано, как использовать библиотеку помощников паролей.
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]