Slim HttpBasicAuth

У меня есть одностраничное приложение REST, и я пытаюсь добавить туда действительно простую авторизацию. Просто войдите, без регистрации. Я использую промежуточное программное обеспечение HTTP Basic Authentication с простым PDO-аутентификатором Mika Tuupola. Это часть моего кода:

    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 должно появиться системное диалоговое окно с запросом имени пользователя и пароля?

Заранее спасибо!

1 ответ

Либо добавьте следующую строку в ваш код:

use Slim\Middleware\HttpBasicAuthentication\PdoAuthenticator;

Или, в качестве альтернативы, создайте промежуточное программное обеспечение как:

$app->add(new Slim\Middleware\HttpBasicAuthentication([
    "path" => "/roomPictures",
    "realm" => "Protected",
    "authenticator" => new Slim\Middleware\HttpBasicAuthentication\PdoAuthenticator([
        "pdo" => $pdo
    ])
]));
Другие вопросы по тегам