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
])
]));