当您在Laravel 4.2中使用基本身份验证过滤器时,我注意到您无法为身份验证设置realm
(可能只是我?),因此当出现身份验证窗口时,它看起来像这在Internet Explorer中:
查看官方文档示例:http://php.net/manual/en/features.http-auth.php#example-372
如果我使用过此功能,则上述登录窗口会显示Restricted area
而不是null
。
知道如何在Laravel中设置基本身份验证领域吗?
此外,当auth失败或用户点击取消按钮时,您设置/样式化文本的方式或位置?
答案 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
。