具有Slim无响应的基本身份验证

时间:2016-05-11 16:02:54

标签: php ajax authentication basic-authentication slim

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

<?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连接时,它什么都不返回。我在邮递员中使用了相同的用户名和密码,没有任何显示,但是当我使用基本身份验证时,它工作正常。

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

这是Postman的照片:

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

2 个答案:

答案 0 :(得分:0)

您已配置两个用户:

  1. 用户名root,密码为t00r
  2. 用户名user,密码为passw0rd
  3. 根据您的屏幕截图,您尝试使用密码为t00r的用户名passw0rd。这在您的配置中不存在。使用上面提到的用户名密码组合之一。

答案 1 :(得分:0)

你需要使用$ 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);

希望这会有所帮助,如果有效,请接受答案..或评论