Http Basic Auth в Slim V2

#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