4

私は現在、Laravel のデフォルトの Auth ミドルウェアと Tymone の JWT.Auth トークン ベースのミドルウェアのいずれかを使用してユーザーが認証されているかどうかを確認するミドルウェアを介してアクセスできるようにしたい API を持つアプリケーションを開発しているため、どちらの方法でもリクエストを認証できます。

両方ではなく、どちらか一方を使用する方法を見つけることができます。どうすればこれを行うことができますか? これらの既存のミドルウェアを使用するカスタム ミドルウェアを作成する必要があると思いますか?

私はLaravel5.1を使用しています

ありがとう

4

2 に答える 2

8

思ったよりも簡単な独自のミドルウェアを作成する必要があったことがわかりました。

<?php

namespace App\Http\Middleware;

use Auth;
use JWTAuth;
use Closure;

class APIMiddleware {

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next) {        
    try {
        $jwt = JWTAuth::parseToken()->authenticate();
    } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
        $jwt = false;
    }
    if (Auth::check() || $jwt) {
        return $next($request);
    } else {
        return response('Unauthorized.', 401);
    }
}
}

次に、カーネルに登録した後、次のように API ルート グループでこのミドルウェアを使用します。

Route::group(['prefix' => 'api', 'middleware' => ['api.auth']], function() {
于 2016-01-21T11:29:09.813 に答える
-1

Route::grouproutes.php ファイルで使用して、使用するミドルウェアを配列で定義できると思います。

Route::group(['middleware' => ['auth', 'someOtherMiddleware']], function()
{
    Route::get('api/somethinglist', function(){
       return App\Something::all();
    });
});

私が間違っていなければ、そのルート グループ内で定義されたすべてのルートが、配列で指定したミドルウェアに対してチェックされます。

于 2016-01-21T11:22:11.850 に答える