Когда вы используете базовый фильтр авторизации в Laravel 4.2, я заметил, что вы не можете установить realm
(может быть, только я?) для аутентификации, и поэтому, когда появляется окно авторизации, оно выглядит так в Internet Explorer:
Взгляните на пример официальной документации: http://php.net/manual/en/features.http-auth.php#example-372
Если бы я использовал это, вышеупомянутое окно входа в систему скажет Restricted area
скорее, чем null
,
Любая идея, как установить область базовой аутентификации в Laravel?
Кроме того, как или где вы устанавливаете / стилизуете текст, который будет отображаться при сбое аутентификации или при нажатии пользователем кнопки отмены?
Нашел это, но ничего не расстроил.
header('WWW-Authenticate: Basic realm="REALM"');
header('HTTP/1.0 401 Unauthorized');
Используйте следующий фильтр маршрута:
Route::filter('auth.basic', function() {
$response = Auth::basic();
if (!is_null($response)) {
return $response->header("WWW-Authenticate", 'Basic realm="REALM"');
}
});
Адаптированы из этот ответ который объясняет, как это работает в деталях; в принципе Auth::basic()
либо возвращает null
если пользователь уже аутентифицирован или 401 Unauthorized
ответ с WWW-Authenticate
заголовок, если ответ не нулевой, мы называем header
метод на этом Response
заменить этот заголовок нашей пользовательской версией WWWi-Authenticate
в том числе realm
параметр; если вы посмотрите на этот метод, вы заметите, что он по умолчанию заменяет любые предыдущие заголовки.
Наконец, возвращаемое значение этого метода — сам объект ответа, поэтому мы можем вернуть его вместо явного возврата $response
на новой линии.