【问题标题】:Set realm of Laravel Basic Auth?设置 Laravel Basic Auth 的领域?
【发布时间】:2014-12-20 06:40:36
【问题描述】:

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

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

如果我使用了这个,上面的登录窗口会显示Restricted area 而不是null

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

另外,当身份验证失败或用户点击取消按钮时,您如何或在哪里设置/设置文本样式?

【问题讨论】:

    标签: php laravel laravel-4 basic-authentication


    【解决方案1】:

    找到了,但没有 laravelish。

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

    【讨论】:

      【解决方案2】:

      使用以下路由过滤器:

      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 或带有WWW-Authenticate 标头的401 Unauthorized 响应,如果响应不为空,我们在Response 上调用header 方法来替换它带有我们自定义版本的WWWi-Authenticate 的标题,包括realm 参数;如果您查看该方法,您会注意到它默认设置为替换任何以前的标题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-29
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多