Yii2 подтвердить пароль для RESTapi - PullRequest
0 голосов
/ 28 января 2019

Если вы не используете пароль, запрос REST проходит.В противном случае вы получите ошибку:

Ошибка:

  "name": "Unauthorized",
  "message": "Your request was made with invalid credentials.",
  "code": 0,
  "status": 401,
  "type": "yii\\web\\UnauthorizedHttpException"

Доступ в модели пользователя:

   public static function findIdentityByAccessToken($username, $password = null)
    {
        // throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
        //return static::findOne(['username' => $username]);

        $user = static::findOne(['username' => $username]);
        if ($user != null and $user->validatePassword($password)) {
            return $user;
        } else {
            return null;
        }
    }

И функция validatePassword:

   public function validatePassword($password)
    {
        $hash = Yii::$app->getSecurity()->generatePasswordHash($password);
        return Yii::$app->getSecurity()->validatePassword($password, $this->password_hash);
    }

Как пройти проверку подлинности?

1 Ответ

0 голосов
/ 28 января 2019

API REST работают обычно путем аутентификации с использованием токенов.Существуют разные типы токенов аутентификации.В этом примере используется basic auth :

Controller

public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['authenticator'] = [
            'class' => HttpBasicAuth::className(),
        ];
        return $behaviors;
    }

Затем необходимо добавить authorization header к вашему запросу со значением

Basic base64_encode(username:password)

...