Lumen 5.2 中的身份验证
Authentication in Lumen 5.2
在AuthServiceProvider中;
Auth::viaRequest('api', function ($request) {
if ($request->input('api_token')) {
return User::where('api_token', $request->input('api_token'))->first();
}
});
我似乎无法让它工作。 GET
请求没有 body
,因此不存在 input
。
我也试过使用 $request->header('api_token')
但仍然得到 unauthorised
如果我像下面那样在 DB
上进行独立搜索,它会起作用;
Auth::viaRequest('api', function ($request) {
return User::where('api_token', 'my_api_key')->first();
});
谁能确认 $request
header 可以在这里访问?
在阅读我的回答之前,请阅读 this article(以防万一您使用的是 Apache Web 服务器)。
Headers containing invalid characters (including underscores) are now silently dropped.
好的,现在要获取您的api_token
值,您需要将您的请求header-field名称更改为Api-Token
(这是标准的,您可以阅读this) .
现在您可以通过以下方式访问您的 Api-Token
值:
$request->header('Api-Token', 'any-default-value');
如果你真的想得到你的非标准头定义,你可以使用getallheaders
函数。更多信息,您可以阅读Symfony\Component\HttpFoundation\ServerBag@getHeaders
方法。
在AuthServiceProvider中;
Auth::viaRequest('api', function ($request) {
if ($request->input('api_token')) {
return User::where('api_token', $request->input('api_token'))->first();
}
});
我似乎无法让它工作。 GET
请求没有 body
,因此不存在 input
。
我也试过使用 $request->header('api_token')
但仍然得到 unauthorised
如果我像下面那样在 DB
上进行独立搜索,它会起作用;
Auth::viaRequest('api', function ($request) {
return User::where('api_token', 'my_api_key')->first();
});
谁能确认 $request
header 可以在这里访问?
在阅读我的回答之前,请阅读 this article(以防万一您使用的是 Apache Web 服务器)。
Headers containing invalid characters (including underscores) are now silently dropped.
好的,现在要获取您的api_token
值,您需要将您的请求header-field名称更改为Api-Token
(这是标准的,您可以阅读this) .
现在您可以通过以下方式访问您的 Api-Token
值:
$request->header('Api-Token', 'any-default-value');
如果你真的想得到你的非标准头定义,你可以使用getallheaders
函数。更多信息,您可以阅读Symfony\Component\HttpFoundation\ServerBag@getHeaders
方法。