#php #api #slim
#php #API #тонкий
Вопрос:
У меня проблема с использованием при установке Slim базовой аутентификации HTTP.
Я должен создать API, который вызывает метод класса, только если http-вызов аутентифицирован.
Это моя разметка:
<?php
$httpAuth = function () use ($app) {
$app->add(new SlimMiddlewareHttpBasicAuthentication(array(
"path" => "/api/generateScratch",
"realm" => "Protected",
"users" => array(
"root" => "t00r",
"user" => "passw0rd"
))));
};
$app->get('/api/generateScratch', $httpAuth, function() use($app,$db) {
$params = $app->request->getBody() ;
if(!empty($params)){
print $params;
require_once ('classes/codes/codes.php');
$codes = new Codes($db, 1);
$res = $codes->assign($params);
}
});
?>
Как я могу завершить свой api? Я не знаю, как выполнить http-аутентифицированный вызов.
Комментарии:
1. С какой реальной проблемой вы столкнулись?
2. Привет, Майк, проблема в том, что ничего не работает 🙂 Вы видите мой код, когда я захожу в / api / generateScratch, я получаю сообщение «Тип: Код исключения ошибки: 4096 Сообщение: Аргумент 1, переданный Slim Slim::add(), должен быть экземпляром Slim Middleware, экземпляр Slim Middleware HttpBasicAuthentication задан»
3. Вы должны обновить свой вопрос, чтобы включить в него фактическую проблему и сообщение об ошибке.
Ответ №1:
Мика,
я добавляю некоторую информацию:
-
я использую SLim v2
-
я использую предыдущую установку slim, поэтому я не могу использовать $ app-> run или $ app = new Slim Slim(); потому что эти инструкции находятся в проекте main index.php
Ответ №2:
В соответствии с документацией установите версию промежуточного программного обеспечения Slim 2.
$ composer require tuupola/slim-basic-auth:^1.0
Затем вы можете сделать следующее.
$app = new SlimSlim();
$app->add(new SlimMiddlewareHttpBasicAuthentication([
"path" => "/api/generateScratch",
"realm" => "Protected",
"users" => [
"root" => "t00r",
"someone" => "passw0rd"
]
]));
$app->get('/api/generateScratch', function() use ($app, $db) {
/* Here be dragons... */
});
Если вы хотите, чтобы все ваши маршруты API были аутентифицированы, сделайте это вместо этого.
$app->add(new SlimMiddlewareHttpBasicAuthentication([
"path" => "/api",
"realm" => "Protected",
"users" => [
"root" => "t00r",
"someone" => "passw0rd"
]
]));
Комментарии:
1. Мика помнит, что я использую Slim V2, а не V3 … если я напишу «$ app-> add(new Slim Middleware HttpBasicAuthentication([ «path» => «/api/generateScratch», «realm» => «Protected», «users» => [ «root» => «t00r», «someone» => «passw0rd» ] ])); » я получаю сообщение об ошибке..
2. Мой пример и ссылка на документацию предназначены для Slim v2. Вы уверены, что используете правильную версию плагина из Slim v2? Для меня это звучит так, как будто вы пытаетесь использовать плагин Slim 3 в приложении Slim 2.
3. где я могу получить плагин для v2?
4. Инструкции приведены в документации: github.com/tuupola/slim-basic-auth/blob/1.x/README.md