Slimフレームワークの認証が機能しない

Vaibhav desai

Slimフレームワークを使用してRESTfulAPIを作成しています。

get apiを作成することはできますが、getリクエストに認証を追加すると、エラー(Advanced Rest client google chrome extension)がスローされます。エラーは次のとおりです。

<html><head><title>Slim Application Error</title><style>body{margin:0;padding:30px;font:12px/1.5 Helvetica,Arial,Verdana,sans-serif;}h1{margin:0;font-size:48px;font-weight:normal;line-height:48px;}strong{display:inline-block;width:65px;}</style></head><body><h1>Slim Application Error</h1><p>The application could not run because of the following error:</p><h2>Details</h2><div><strong>Type:</strong> ErrorException</div><div><strong>Code:</strong> 8</div><div><strong>Message:</strong> Undefined variable: apiKey</div><div><strong>File:</strong> /Library/WebServer/Documents/pascal_api/rest_api/v1/index.php</div><div><strong>Line:</strong> 34</div><h2>Trace</h2><pre>#0 /Library/WebServer/Documents/pascal_api/rest_api/v1/index.php(34): Slim\Slim::handleErrors(8, 'Undefined varia...', '/Library/WebSer...', 34, Array)
#1 [internal function]: authenticate(Object(Slim\Route))
#2 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Route.php(433): call_user_func_array('authenticate', Array)
#3 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Slim.php(1307): Slim\Route->dispatch()
#4 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Middleware/Flash.php(85): Slim\Slim->call()
#5 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
#6 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
#7 /Library/WebServer/Documents/pascal_api/rest_api/libs/Slim/Slim.php(1254): Slim\Middleware\PrettyExceptions->call()
#8 /Library/WebServer/Documents/pascal_api/rest_api/v1/index.php(100): Slim\Slim->run()
#9 {main}</pre></body></html>

これが私のコードです:

<?php

require '.././libs/Slim/Slim.php';

\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();

function isValidApiKey($api_key) {
    $m = new MongoClient();
    $db = $m->pascal;
    $collection = $db->apiUsers;
    if($collection->findOne(array('apiKey' => $api_key))){
        return true;
    }

    else{ 
        return false;
    }

}

function authenticate(\Slim\Route $route) {
    // Getting request headers
    $headers = apache_request_headers();
    $response = array();
    $app = \Slim\Slim::getInstance();

    // Verifying Authorization Header
    if (isset($headers['Authorization'])) {

        // get the api key
        $api_key = $headers['Authorization'];
        echo $apiKey;
        // validating api key
        //$db = new dbSupport();
        if ($isValidApiKey($api_key) === false) {

            // api key is not present
            $response["error"] = true;
            $response["message"] = "Access Denied. Invalid Api key";
            echoRespnse(401, $response);
            $app->halt(401);

        }
        else{

        }
    } else {
        // api key is missing in header
        $response["error"] = true;
        $response["message"] = "Api key is misssing";
        echoRespnse(400, $response);
        $app->halt(401);
    }
}


$app->get('/offerData','authenticate',function() use ($app) {

            $m = new MongoClient();
            $db = $m->pascal;
            $collection = $db->offerDetails;

            $offer_array = array();
            $cursor = $collection->find();
            $offer_array["offers"] = array();

            foreach ($cursor as $document) {

                $offerData = array('title' => $document['title'],
                             'discription' => $document['discription'],
                             'create_time' => $document['create_time'],
                             'expire_time' => $document['expire_time'],
                             'coordinates' => $document['loc']['coordinates'],
                             'address' => $document['address'],
                             'tags' => $document['tags'],
                             'phone_number' => $document['phone_number'],
                             'email' => $document['email'],
                             'website' => $document['website'],
                             'img_url' => $document['img_url']
                             );
                array_push($offer_array["offers"], $offerData);
            }
            $offer_array["error"] = false;
            echoRespnse(200, $offer_array);
        });

function echoRespnse($status_code, $response) {
    $app = \Slim\Slim::getInstance();
    // Http response code
    $app->status($status_code);

    // setting response content type to json
    $app->contentType('application/json');

    echo json_encode($response);
}

$app->run();
?>

このエラーの原因は何ですか?ありがとう

ヌーク-TheGunner

$ headersでprint_rコマンドを実行して、そこに何が入っているかを確認してください。キーが設定されていないか、コードにまったく反映されていないと思います

では、28行目の前にこれを実行します。

    $api_key=null ;

これを一度試して、私に知らせてください。

これはエラーです:

           $api_key = $headers['Authorization'];
           echo $apiKey;

しかし、エコーは間違った変数を出力しています。

           echo $api_key;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

トークン認証が機能しないdjangoRESTフレームワーク

イオンフレームワークwprestapi基本認証が機能しない

スリムフレームワークで認証ヘッダーが機能しないGETリクエストの前のOPTIONSリクエスト4

DjangoRESTフレームワークのURLPathVersioningが機能しない

includeDetailsがABPフレームワークで機能しない

ModelIOフレームワークが機能しない

ExceptionMapperがJerseyTestフレームワークで機能しない

DjangoRESTフレームワーク2の例が機能しない

Django RESTフレームワーク、更新の実行が機能しない

Firebase認証がhtmlフォーム要素で機能しない

InternetExplorerでフォーム認証が機能しない

フォーム認証IsAuthenticatedが機能しない外部リンク

DjangoRESTフレームワーク認証の詳細なし

トークン認証は、djangoRESTフレームワークの本番環境では機能しません

DjangoレストフレームワークRetrieveAPIViewが機能しない:404

iOSチャートフレームワークmaximumFractionDigitsが機能しない

ZurbFoundationフレームワークが正しく機能しない

quasarフレームワークdatatablelaravelサーバーのページ付けが機能しない

画像/ファイルのアップロードがmaterializecssフレームワークで機能しない

DjangoRESTフレームワークModelSerializerread_only_fieldsが機能しない

LogMetricがMicrosoft拡張フレームワークで機能しない

EclipseJUnitおよびSpockフレームワーク「GoToTest」が機能しない

CSSとJSがFlaskフレームワークで機能しない

WatchOS2接続フレームワークが機能しない

djangoRESTフレームワークのグローバルページ付けがListCreateAPIViewで機能しない

外部jsファイルのajaxがcodeigniterフレームワークで機能しない理由

正規表現が空手フレームワークで機能しないのはなぜですか?

Fat Free フレームワークの動的ルーティングが機能しない

Nest.jsフレームワークのホットリロードが機能しない

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    CSSのみを使用して三角形のアニメーションを作成する方法

  3. 3

    ZScalerと証明書の問題により、Dockerを使用できません

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    別のホストからTomcat Managerアプリにアクセスする

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

    Python / SciPyのピーク検出アルゴリズム

  9. 9

    MLでのデータ前処理の背後にある直感

  10. 10

    useRefに反応してコンポーネントをスクロールして表示する

  11. 11

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  12. 12

    パンダは異なる名前の列に追加します

  13. 13

    PictureBoxで画像のブレンドを無効にする

  14. 14

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  15. 15

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  16. 16

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  17. 17

    Material-UIでTextFieldエラーの色を条件付きでオーバーライドする方法

  18. 18

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  19. 19

    MatplotlibまたはSeabornを使用して、グループ化されたデータから複数のプロットを生成するにはどうすればよいですか?

  20. 20

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  21. 21

    Flutterにファイルピッカープラグインを追加するにはどうすればよいですか?

ホットタグ

アーカイブ