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 一起使用。
您配置了两个用户:
- 用户名
root
密码t00r
- 用户名
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);
希望这对您有所帮助,如果有效请采纳答案..或发表评论
我正在使用 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 一起使用。
您配置了两个用户:
- 用户名
root
密码t00r
- 用户名
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);
希望这对您有所帮助,如果有效请采纳答案..或发表评论