Установить область Laravel Basic Auth?

Когда вы используете базовый фильтр аутентификации в Laravel 4.2, я заметил, что вы не можете установить realm (может быть, только я?) для аутентификации, и поэтому, когда появляется окно аутентификации, оно выглядит так в Internet Explorer:

введите здесь описание изображения

Взгляните на пример официальной документации: http://php.net/manual/en/features.http-auth.php#example-372

Если бы я использовал это, в приведенном выше окне входа в систему было бы указано Restricted area, а не null.

Любая идея, как установить область базовой аутентификации в Laravel?

Кроме того, как или где вы устанавливаете/стилизуете текст для отображения, когда авторизация не удалась или пользователь нажимает кнопку отмены?


person Latheesan    schedule 19.12.2014    source источник


Ответы (2)


Нашел это, но ничего ларавельского.

header('WWW-Authenticate: Basic realm="REALM"');
header('HTTP/1.0 401 Unauthorized');
person Will SxM    schedule 19.12.2014

Используйте следующий фильтр маршрута:

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 в новой строке.

person Community    schedule 19.12.2014