设置Laravel Basic Auth的领域?

时间:2014-12-19 18:31:14

标签: php laravel laravel-4 basic-authentication

当您在Laravel 4.2中使用基本身份验证过滤器时,我注意到您无法为身份验证设置realm(可能只是我?),因此当出现身份验证窗口时,它看起来像这在Internet Explorer中:

enter image description here

查看官方文档示例:http://php.net/manual/en/features.http-auth.php#example-372

如果我使用过此功能,则上述登录窗口会显示Restricted area而不是null

知道如何在Laravel中设置基本身份验证领域吗?

此外,当auth失败或用户点击取消按钮时,您设置/样式化文本的方式或位置?

2 个答案:

答案 0 :(得分:0)

发现了,但没有任何荒凉。

header('WWW-Authenticate: Basic realm="REALM"');
header('HTTP/1.0 401 Unauthorized');

答案 1 :(得分:0)

使用以下路由过滤器:

Route::filter('auth.basic', function() {
    $response = Auth::basic();

    if (!is_null($response)) {
        return $response->header("WWW-Authenticate", 'Basic realm="REALM"');
    }
});

改编自this answer,详细解释了它的工作原理;如果用户已经过身份验证,则基本Auth::basic()会返回null,如果响应不为空,则返回401 Unauthorized响应,我们会调用{{3} } WWW-Authenticate上的方法用我们的自定义版Response替换该标头,包括WWWi-Authenticate参数;如果你看一下这个方法,你会注意到它默认设置为替换任何以前的标题。

最后,该方法的返回值是响应对象本身,因此我们可以返回该值而不是在新行上显式返回realm