Php Laravel HTTP基本身份验证不起作用
我正在Laravel中构建一个API,并尝试使用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
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}]