2

AuthServiceProvider;

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

私はこれを機能させることができないようです。GETrequests には abodyがないため、noinputが存在します。また、使用してみまし$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');

非標準のヘッダー定義を本当に取得したい場合は、getallheaders関数を使用できます。詳細については、Symfony\Component\HttpFoundation\ServerBag@getHeadersメソッドを参照してください。

于 2016-01-11T09:12:15.777 に答える