我目前正在開發和應用程序,我希望通過中間件訪問API,以檢查用戶是否使用Laravel的默認Auth中間件和Tymone的基於JWT.Auth令牌的中間件進行身份驗證,可以通過任何一種方式進行驗證。Laravel中間件API的驗證
我可以計算出如何使其中一個或另一個不能同時使用,我怎麼能這樣做?我在想我需要創建一個使用這些現有中間件的定製中間件?
我使用Laravel 5.1
感謝
我目前正在開發和應用程序,我希望通過中間件訪問API,以檢查用戶是否使用Laravel的默認Auth中間件和Tymone的基於JWT.Auth令牌的中間件進行身份驗證,可以通過任何一種方式進行驗證。Laravel中間件API的驗證
我可以計算出如何使其中一個或另一個不能同時使用,我怎麼能這樣做?我在想我需要創建一個使用這些現有中間件的定製中間件?
我使用Laravel 5.1
感謝
原來我也需要讓我自己的中間件,比我想象的要簡單:
Route::group(['prefix' => 'api', 'middleware' => ['api.auth']], function() {
:
<?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航線組像這樣在內核中註冊後
我認爲你可以在你的routes.php文件文件中使用Route::group
並定義要在陣列中使用中間件。
Route::group(['middleware' => ['auth', 'someOtherMiddleware']], function()
{
Route::get('api/somethinglist', function(){
return App\Something::all();
});
});
如果我沒有記錯的這條路線組中定義的所有路線是對中間件()你在數組中指定檢查。
這是正確的,但這意味着中間件必須通過而不是一個或兩個。 – rosscooper
嗯,好吧,我以爲那是你想要的,但我現在看到了你以後的樣子。無論如何,很高興你能解決這個問題! – Dippner