Пожалуйста, измените область на «Моя область».
$middleware = [
new \Middlewares\ResponseTime(),
(new \Middlewares\BasicAuthentication([
'username1' => 'password1',
'username2' => 'password2'
]))->attribute('username')->realm('My realm')
];
Запрос GuzzleHttp происходит в бэкэнде, поэтому он не будет работать, как обычно, в браузере, например, запрашивая имя пользователя и пароль.Вы в основном имитируете запрос, когда используете Guzzle без каких-либо браузеров.Таким образом, если вы хотите запросить подсказку, вам придется реализовать эту логику без использования GuzzleHttp.
Вы все еще можете протестировать его с помощью Guzzle, как показано ниже.
Приведенный ниже код будет работать.
$request = \GuzzleHttp\Psr7\ServerRequest::fromGlobals()->withHeader('Authorization', 'Basic '.base64_encode('username1:password1'));
$response = $collection->dispatch($request, $default);
echo $response->getStatusCode(); //200
echo $response->getReasonPhrase(); // OK
Приведенный ниже код завершится ошибкой.
$request = \GuzzleHttp\Psr7\ServerRequest::fromGlobals()->withHeader('Authorization', 'Basic '.base64_encode(''IncorrectUser:IncorrectPassword''));
$response = $collection->dispatch($request, $default);
echo $response->getStatusCode(); //401
echo $response->getReasonPhrase(); // Unauthorized
Наилучший способ реализации BasicAuthentication
будет в рамках промежуточного программного обеспечения.
Zend Expressive
//Example using your library
$app->pipe((new \Middlewares\BasicAuthentication([
'username1' => 'password1',
'username2' => 'password2'
])
)->attribute('username')->realm('My realm'));
//Example using other library
$app->pipe(new Tuupola\Middleware\HttpBasicAuthentication([
"users" => [
"root" => "t00r",
"user" => "passw0rd"
]
]));
Оба приведенных выше кода работают должным образом.Например, запросить имя пользователя и пароль в браузере и разрешить пользователю просматривать содержимое при отправке правильных учетных данных.Жадность вызывает у вас проблемы.
Надеюсь, это поможет.