web-dev-qa-db-ja.com

laravel controller?

[〜#〜] api [〜#〜]を作成するためにコントローラーでヘッダー認証キーを取得しようとしています。要求はfiddlerから行われています。

$headers = Apache_request_headers();

そして、$ headerには配列が含まれています。

Array
(
    [User-Agent] => Fiddler
    [Host] => localhost:8000
    [Content-Length] => 102
    [Authorization] => TestKey
)

このようにAuthorizationをフェッチしようとすると、そのスローエラーが発生します。

$header['Authorization]

エラー

Undefined index: Authorization

認可を得るために多くの方法を試しましたが、何も機能しませんでした。これを取得する方法はありますか?

25
Sunil

リクエストからヘッダーを取得するには、Requestクラスを使用する必要があります

public function yourControllerFunction(\Illuminate\Http\Request $request)
{
    $header = $request->header('Authorization');

    // do some stuff
}

https://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header

56
Szenis

古いトピックですが、誰かに役立つかもしれません...
新しいLaravelバージョンでは、Illuminate\Http\RequestbearerToken()メソッドを呼び出すことにより、ベアラー認証トークンを直接取得できます。

Auth::viaRequest('costom-token', function (Request $request) {
    $token = $request->bearerToken();
    // ...
});

または、コントローラーから直接:

public function index(Request $request) {
    Log::info($request->bearerToken());
    // ...
}
10
Footniko

Jwt(JSON Web Token Authentication for Laravel&Lumen) http://jwt-auth.com をコンポーザー経由でインストールしてみてください。

ヘッダーリクエストにトークンキーが存在するかどうかを確認するミドルウェアを作成します。

Jwtをインストールした後、ミドルウェアは次のようになります。

<?php

namespace App\Http\Middleware;

use Closure;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;

class VerifyJWTToken
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        try {
            $user = JWTAuth::toUser($request->header('token'));

        } catch (JWTException $e) {
            if ($e instanceof TokenExpiredException) {
                return response()->json([
                    'error' => 'token_expired',
                    'code' => $e->getStatusCode()
                ], $e->getStatusCode());
            } 
            else if($e instanceof TokenInvalidException){
                return response()->json([
                    'error' => "token_invalid",
                    'code' => $e->getStatusCode()
                ], $e->getStatusCode());
            } 
            else {
                return response()->json([
                    'error' => 'Token is required',
                    'code' => $e->getStatusCode(),

                ], $e->getStatusCode());
            }
        }

        return $next($request);
    }
}

たとえば、ヘッダーキーにトークンを使用しましたが、好きなように名前を付けることができます。

次に、これを任意のコントローラーで使用できます

0
Ivan Fretes