Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel HTTP基本身份验证不起作用_Php_Authentication_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel HTTP基本身份验证不起作用

Php Laravel HTTP基本身份验证不起作用,php,authentication,laravel,laravel-4,Php,Authentication,Laravel,Laravel 4,我正在Laravel中构建一个API,并尝试使用HTTP基本身份验证。我创建了一个电子邮件/密码组合为user@gmail.com:testpass。我正在访问需要身份验证的以下URL处的端点:https://user@gmail.com:testpass@myapp.local/用户/2 当我将auth.basic路由筛选器附加到此路由时,我可以通过auth类成功验证并访问已验证用户的详细信息,但是由于这是一个API,我想使用无状态HTTP basic验证,因此我编写了自己的筛选器: // O

我正在Laravel中构建一个API,并尝试使用HTTP基本身份验证。我创建了一个电子邮件/密码组合为
user@gmail.com:testpass
。我正在访问需要身份验证的以下URL处的端点:
https://user@gmail.com:testpass@myapp.local/用户/2

当我将
auth.basic
路由筛选器附加到此路由时,我可以通过
auth
类成功验证并访问已验证用户的详细信息,但是由于这是一个API,我想使用无状态HTTP basic验证,因此我编写了自己的筛选器:

// Our own auth filter to use onceBasic and return a consistent API response
Route::filter('basic.once', function() {
    $result = Auth::onceBasic();

    if ($result->getStatusCode() === 401) {
        // Unauthorized, return our own response
        return Response::json([
            'message' => 'Bad credentials'
        ], Config::get('status.error.unauthorized'));
    }

    return $result;
});
不管怎样,这里的
Auth::onceBasic()
结果总是返回unauthorized,即使我发送的用户名/密码组合保持不变。即使我将过滤器中的
Auth::onceBasic()
更改为
Auth::basic()
,它仍然返回unauthorized


我甚至不知道从哪里开始调试它,因为我的过滤器本质上与Laravel附带的
auth.basic
过滤器相同,尽管有更多的代码来生成一致的API输出。

您使用的是PHP FastCGI吗

从官方的Laravel文件:


关于FastCGI的一点注记 如果您使用的是PHP FastCGI,HTTP基本身份验证可能无法立即正常工作。应将以下行添加到.htaccess文件中:



我自己用这种方法解决了这个问题。

你能发布你的用户模型吗?还有,你的密码在数据库中被哈希了吗?你解决了吗?您是否尝试更改.httaccess?
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]