Slim 的基本身份验证无响应

Basic auth with Slim no response

我正在使用 Slim 和 REST 实现基本身份验证。我已经通过 Composer 安装了基本身份验证并使用了以下代码。

<?php

require 'confing.php';
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim;

$app->add(new \Slim\Middleware\HttpBasicAuthentication([
    "path" => "/admin", /* or ["/admin", "/api"] */
    "realm" => "Protected",
    "users" => [
        "root" => "t00r",
        "user" => "passw0rd"
    ],
    "callback" => function ($request, $response, $arguments) {
        print_r($arguments);
    }
]));

$app->get('/getLaboorState/:laboor_id', function($laboor_id) use ($app) {
    $db =getDB();

    $sql="SELECT status FROM laboor WHERE laboor_id='".$laboor_id."'";
    $stmt = $db->query($sql); 
    $items = $stmt->fetchAll();
    echo json_encode($items);


});

$app->run();
?>

当我现在尝试将 /getLaboorState 与 Postman 连接时,returns 什么都没有。我在邮递员中使用了相同的用户名和密码,但没有任何显示,但是当我进行基本身份验证时,它工作正常。

其他问题是,在实现基本身份验证后,如何限制所有 slim api 在 运行 查询之前抛出每个 api?

这是来自 Postman 的照片:

注意:然后我想将 API 与 AJAX 一起使用。

您配置了两个用户:

  1. 用户名root密码t00r
  2. 用户名user密码passw0rd

根据您的屏幕截图,您正在尝试使用用户名 t00r 和密码 passw0rd。这在您的配置中不存在。使用上述用户名密码组合之一。

您需要使用 $authenticate($app) 来限制所有 slim api 在 运行 查询

之前抛出每个 api
$app->get('/profile(/)(:id)', $authenticate($app), function($laboor_id) use ($app) {
//Your logic here
})->name('profile');

$authenticate = function ($app) {
    return function () use ($app) {
//your logic here
        if (!isset($_SESSION['ID'])) {

            $app->redirect($app->urlFor('loginpage'));

        }
   };
};

使用下面的代码显示调用 Ajax 请求时出现的确切错误

header('Access-Control-Allow-Origin: *');
ini_set('display_errors', 1);
error_reporting(E_ALL);

希望这对您有所帮助,如果有效请采纳答案..或发表评论