【发布时间】:2014-12-31 09:14:39
【问题描述】:
我正在 Laravel 中构建一个 API,并尝试使用 HTTP 基本身份验证。我用user@gmail.com:testpass 的电子邮件/密码组合创建了一个用户。我正在通过以下 URL 访问需要身份验证的端点:https://user@gmail.com:testpass@myapp.local/users/2
当我将auth.basic 路由过滤器附加到此路由时,我可以通过Auth 类成功地进行身份验证并访问经过身份验证的用户的详细信息,但是由于这是一个API,我想使用无状态HTTP 基本身份验证,所以我写了我自己的过滤器:
// 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() 的结果总是返回未经授权的,即使我发送的用户名/密码组合保持不变。即使我在过滤器中将Auth::onceBasic() 更改为Auth::basic(),它仍然会返回未经授权的结果。
我什至不知道从哪里开始调试它,因为我的过滤器与 Laravel 附带的 auth.basic 过滤器基本相同,尽管需要更多代码来产生一致的 API 输出。
【问题讨论】:
-
你能发布你的用户模型吗?另外,您在数据库中的密码是否经过哈希处理?
-
你解决了吗?您是否尝试更改 .httaccess?
标签: php authentication laravel laravel-4