Как войти с хешированными паролями в PHP, используя Yii Framework?

1

У меня есть другое приложение, которое отправляет мне хешированный пароль, и я пытаюсь получить прямой вход в свое приложение, как только получаю его, но функция Yii Login использует переменную _identity, которая проверяет имя пользователя и неуправляемый пароль. Кто-нибудь знает об этом, чтобы я мог получить прямой логин? Это мой пример кода:

public function actionPortalLogin()
{
    $model=new LoginForm;
    $model->username = 'username';
    $model->password = 'randomHashedPassword';
    $model->Login();
    if (Yii::app()->user->returnUrl == "/myapp/index.php") {

            $this->redirect("/myapp/index.php/home/userHome");
        }

    else {
        $this->redirect(Yii::app()->user->returnUrl);
    }
}

public function Login()
{
    if($this->_identity===null)
    {
        $this->_identity=new UserIdentity($this->username,$this->password);
        $this->_identity->authenticate();
    }
    if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
    {
        $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
        Yii::app()->user->login($this->_identity,$duration);
        return true;
    }
    else
        return false;
}

Довольно просто. В идеале, вместо первых нескольких строк, я бы получил имя пользователя и перешел из другого приложения, а затем смог бы выполнить вход в систему, используя мое собственное приложение, но, как я уже сказал, это, похоже, не работает. Кто-нибудь знает какие-либо обходные пути для этого или, может быть, способ, которым yii может проверять хэшированные пароли и использовать его для входа в систему без необходимости расшифровать его?

Благодарю.

Теги:
hash
yii

1 ответ

1
Лучший ответ

Если вы хотите отправить зашифрованный пароль, вам необходимо будет расшифровать его до идентификации пользователя.

$model = new LoginForm;
$mode->password = LoginForm::decryptPassword('encrypted password value here');

Решения по шифрованию и расшифровке вы найдете там:

Двустороннее шифрование: мне нужно хранить пароли, которые можно получить

Лучший способ использовать PHP для шифрования и дешифрования паролей?

Как вы шифруете и расшифровываете строку PHP?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню