Я реализую базовую аутентификацию с 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 с Почтальоном, он ничего не возвращает. Я использовал те же имя пользователя и пароль в почтальоне, и ничего не показывает, но когда я беру базовую аутентификацию, она работает нормально.
Другие вопросы, после реализации базовой аутентификации, как я могу ограничить все тонкие API, чтобы бросить каждый API перед запуском запроса?
Это фотография от Почтальона:
Примечание: тогда я хочу использовать API с AJAX.
вам нужно использовать $ authenticate ($ app), чтобы ограничить все тонкие 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);
Надеюсь, это поможет, примите ответ, если он работает .. или комментарий
Вы настроили двух пользователей:
root
с паролем t00r
user
с паролем passw0rd
Согласно вашему скриншоту вы пытаетесь использовать имя пользователя t00r
с паролем passw0rd
, Это не существует в вашей конфигурации. Используйте одну из комбинаций паролей имени пользователя, упомянутых выше.