何らかの理由で、私のYii2 REST API認証がもう機能しません。Yii2の基本的なREST API認証エラー
function getJSON($template_url) {
$authorization = "Authorization: Bearer " . get_option("auth_key");
// Create curl resource
$ch = curl_init();
// Set URL
curl_setopt($ch, CURLOPT_URL, $template_url);
// Return transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Set headers
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
// $output contains output as a string
$output = curl_exec($ch);
// Close curl resource
curl_close($ch);
return json_decode($output, true);
}
これは私に次のような応答を提供します:私は私のAPIからの応答を取得するための機能を書いている
アレイ([名] =>不正な[メッセージ] =>無効な資格情報を要求している[コード] => 0 [ステータス] => 401 [タイプ] =>のYii \ウェブ\のUnauthorizedHttpException)
を、私は私のコントローラでこれを持っている:
public function behaviors(){
return [
'contentNegotiator' => [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
'authenticator' => [
'class' => CompositeAuth::className(),
'except' => ['activate'],
'authMethods' => [
HttpBearerAuth::className(),
],
]
];
}
そして、これは、UserクラスにfindIdentityByAccessTokenです:
public static function findIdentityByAccessToken($token, $type = null) {
$query = (new Query())
->select([
'kl.access_token access_token',
])
->from('klanten kl')
->where(['kl.access_token' => $token])
->one();
return $query;
}
データベーステーブルに列access_tokenはを持っています。私は、getJSON関数で使用するアクセストークンがデータベースで使用可能かどうかを確認しました。だから私は何が間違っているのか分からない。
私は私のWordPressのプラグインでこのコードを使用していますので、私はhtaccessファイルを変更することはできません。またはAuthorizaitonヘッダーがAPIで失われることはありますか? –
これは、あなたが「何らかの理由で私のYii2 REST API認証がもう働かない」と言ったときにこれが問題になると仮定していただけです - これは私には既に働いていて、速く走っている別のサーバー/ cgiモードでは、認証ヘッダーが失われます。 – nadar
それは前に本当にうまくいった。私は、変更されたのはデータベース接続だけだと思います。しかし、データベースはまったく同じですので、問題があるかどうかわかりません。 –