yiiフレームワークを使用してAPIを準備しました。 APIには、HTTP_X_USERNAMEおよびHTTP_X_PASSWORDパラメータをチェックし、それらをデータベース内のいくつかのデータと比較する認証メソッドが含まれています。TomcatサーバーでYii Frameworkを使用HTTP_X_USERNAMEはローカルで認識されますがオンラインではありません
テストデベロッパー(WAMP + Eclipse + Tomcat)上のすべてをローカルでテストしていましたが、正常に動作しました。私は郵便配達員とすべてをテストしました。私はこれらの2つのパラメータ(HTTP_X _...)をヘッダに入れました。
プロダクションサーバ(Tomcat)にアップロードしたapiは、ローカルとオンラインの認証データは同じですが、常に認証はFALSEを返します。コードは、これらのパラメータが "APIにアクセスする権限が必要です。ユーザー名とパスワードが設定されていません"と設定されているかどうかをチェックする部分で停止します。
問題はどこにあるのでしょうか?なぜそれはローカルで、オンラインではないのですか?
private function _checkAuth() {
$headers = apache_request_headers();
if (! (isset ($headers ['HTTP_X_USERNAME']) and isset ($headers ['HTTP_X_PASSWORD']))) {
// Error: Unauthorized
$this->badResponse (401, 'You must be authorized to access the api. No USERNAME and PASSWORD set.');
}
$username = $headers ['HTTP_X_USERNAME'];
$password = $headers ['HTTP_X_PASSWORD'];
// Find the user
$criteria = new CDbCriteria();
$criteria->addCondition ('email = :email');
$criteria->addCondition('api_access_token = :pass');
$criteria->params = array(':email' => $username, ":pass" => $password);
$school = AutoSchool::model()->find ($criteria);
if ($school === null) {
$this->badResponse (401, 'Error: You must be authorized to access the api.');
}
return $school->id;
}