【问题标题】:Http Basic Auth in Slim V2Slim V2 中的 Http 基本身份验证
【发布时间】:2016-10-20 19:31:10
【问题描述】:

在 Slim 安装下,我在使用 HTTP 基本身份验证时遇到问题。

我必须创建一个 API,仅当 http 调用经过身份验证时才调用类方法。

这是我的标记:

<?php
$httpAuth = function () use ($app) {
    $app->add(new \Slim\Middleware\HttpBasicAuthentication(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 认证调用。

【问题讨论】:

  • 您面临的实际问题是什么?
  • 嗨,迈克,问题是没有任何作用 :) 你看到我的代码,当我转到 /api/generateScratch 时,我收到“类型:ErrorException 代码:4096 消息:参数 1 传递给 Slim\ Slim::add() 必须是 Slim\Middleware 的实例,Slim\Middleware\HttpBasicAuthentication 的实例给定"
  • 您应该更新您的问题以包含实际问题和错误消息。

标签: php api slim


【解决方案1】:

米卡,

我添加了一些信息:

  • 我正在使用 SLim v2

  • 我使用的是以前的 slim 安装,所以我不能使用 $app->run 或 $app = new \Slim\Slim();因为这些指令在项目主index.php中

【讨论】:

    【解决方案2】:

    按照documentation安装中间件的Slim 2版本。

    $ composer require tuupola/slim-basic-auth:^1.0
    

    那么你可以做以下事情。

    $app = new \Slim\Slim();
    
    $app->add(new \Slim\Middleware\HttpBasicAuthentication([
        "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 \Slim\Middleware\HttpBasicAuthentication([
        "path" => "/api",
        "realm" => "Protected",
        "users" => [
            "root" => "t00r",
            "someone" => "passw0rd"
        ]
    ]));
    

    【讨论】:

    • Mika 记得我使用的是 Slim V2,而不是 V3...如果我写 "$app->add(new \Slim\Middleware\HttpBasicAuthentication([ "path" => "/api /generateScratch", "realm" => "Protected", "users" => [ "root" => "t00r", "someone" => "passw0rd" ] ])); "我收到错误..跨度>
    • 我的示例和文档链接适用于 Slim v2。您确定您使用的是正确版本的 Slim v2 插件吗?对我来说,听起来您正试图在 Slim 2 应用程序中使用 Slim 3 插件。
    • 我在哪里可以获得 v2 的插件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2021-03-21
    • 2011-11-12
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多