2

在 AuthServiceProvider 中;

Auth::viaRequest('api', function ($request) {
    if ($request->input('api_token')) {
        return User::where('api_token', $request->input('api_token'))->first();
    }
});

我似乎无法让它工作。GETrequests 没有,body所以不input存在。我也试过使用$request->header('api_token')但仍然得到unauthorised

如果我对下面的类似内容进行独立搜索,DB它会起作用;

Auth::viaRequest('api', function ($request) {
        return User::where('api_token', 'my_api_key')->first();
});

任何人都可以确认$request可以在此处访问标题吗?

4

1 回答 1

0

在阅读我的答案之前,请阅读这篇文章(以防万一您使用的是 Apache Web 服务器)。

包含无效字符(包括下划线)的标题现在被静默删除。

好的,现在要获取您的api_token值,您需要将您的请求标头字段名称更改为Api-Token(这是标准的,您可以阅读内容)。

现在您可以Api-Token通过以下方式访问您的价值:

$request->header('Api-Token', 'any-default-value');

如果你真的想得到你的非标准头定义,你可以使用getallheadersfunction. 有关更多信息,您可以阅读Symfony\Component\HttpFoundation\ServerBag@getHeaders方法。

于 2016-01-11T09:12:15.777 回答