2017-03-18 17 views
1

私は単一ページのRESTアプリケーションを持っていますが、私はそこに本当に簡単な認証を追加しようとしています。ログインするだけで登録はできません。 私は単純なPDOオーセンティケータを備えたHTTP基本認証ミドルウェアをMika Tuupolaによって使用しています。スリムHttpBasicAuth

require '../vendor/autoload.php'; 
    require '../src/config.php'; 

    $app = new Slim\App(['settings' => $config]); 


    $container = $app->getContainer(); 
    $container['db'] = function ($c) { 
    $db = $c['settings']['db']; 
    $pdo = new PDO("mysql:host=" . $db['host'] . ";dbname=" . $db['dbname'], 
     $db['user'], $db['pass']); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
    return $pdo; 
}; 


$app->add(new \Slim\Middleware\HttpBasicAuthentication([ 
    "path" => "/roomPictures", 
    "realm" => "Protected", 
    "authenticator" => new PdoAuthenticator([ 
     "pdo" => $pdo 
    ]) 
])); 


require '../src/routes.php'; 

$app->run(); 

mypage.dev/roomPicturesをリロードした後、私はちょうど500内部サーバーエラーを取得する:これは私のコードの一部です。 あなたは私が間違っていたかもしれない考えを持っていますか?

私はこの権利を理解しているかどうかはわかりませんが、トリガー/ roomPicturesの後に、ユーザー名とパスワードを尋ねるシステムダイアログウィンドウが表示されるはずですか?

ありがとうございます!

+0

ルック。 –

+0

重複した質問は、あなたの答え[ここ](http://stackoverflow.com/questions/36168362/slim-basic-authentication)を参照してください。 –

+0

私の意見では全く同じではありません – marek

答えて

1

どちらかあなたのコードに次の行を追加します。

use Slim\Middleware\HttpBasicAuthentication\PdoAuthenticator; 

または代わりとしてミドルウェアをインスタンス化:あなたのエラーログで

$app->add(new Slim\Middleware\HttpBasicAuthentication([ 
    "path" => "/roomPictures", 
    "realm" => "Protected", 
    "authenticator" => new Slim\Middleware\HttpBasicAuthentication\PdoAuthenticator([ 
     "pdo" => $pdo 
    ]) 
])); 
+0

私は第2の選択肢を試しました。 "pdo" => $ pdo行で、エディタは$ pdoが未定義の変数であると言っています。どうすればこの問題を解決できますか? – marek

+0

$ pdo変数を定義するか、$ pdo変数を定義する$ container ['db']を渡します。 –

+0

このような? $ app =新しいSlim \ App(['settings' => $ config]); $ pdo_var = $ container ['db'];そして "pdo" => $ pdo_var ??? – marek

関連する問題