Laravel Lumen 5.2中的身份验证
在AuthServiceProvider中Laravel Lumen 5.2中的身份验证,laravel,laravel-5,lumen,lumen-5.2,Laravel,Laravel 5,Lumen,Lumen 5.2,在AuthServiceProvider中 Auth::viaRequest('api', function ($request) { if ($request->input('api_token')) { return User::where('api_token', $request->input('api_token'))->first(); } }); 我好像没法让它工作获取请求没有正文,因此不存在输入。 我也尝试过使用$request
Auth::viaRequest('api', function ($request) {
if ($request->input('api_token')) {
return User::where('api_token', $request->input('api_token'))->first();
}
});
我好像没法让它工作<代码>获取请求没有正文
,因此不存在输入
。
我也尝试过使用$request->header('api\u token')
,但仍然得到未经授权的
如果我在下面的DB
上进行独立搜索,它会工作
Auth::viaRequest('api', function ($request) {
return User::where('api_token', 'my_api_key')->first();
});
有人能确认可以在这里访问
$request
标题吗?在阅读我的答案之前,请先阅读(以防您使用Apache Web服务器)
包含无效字符(包括下划线)的标题现在被静默删除
好的,现在要获取您的api_令牌
值,您需要将请求头字段名更改为api令牌
(这是标准的,您可以阅读)
现在,您可以通过以下方式访问您的Api令牌
值:
$request->header('Api-Token', 'any-default-value');
如果您真的想获得非标准的标题定义,可以使用函数。有关更多信息,请阅读
Symfony\Component\HttpFoundation\ServerBag@getHeaders
方法。请求看起来像什么?请求的输入来自查询字符串:http://example.com/users?api_token=my_api_key
。仍然不起作用。我也用POST
尝试过它,它也可以用POST
工作,因为我把api\u标记
放在了主体中。另外,您应该知道在laravel/lumen
中没有?
,所以我刚刚修改了我的路由到/{api_token}
lumen知道如何处理通过查询字符串传入的变量。如果将api\u令牌作为查询字符串的一部分传入,则可以使用$request
变量访问它。但是,看起来您已经使用了header方法,所以这也很好。