我目前正在开发和应用程序,我希望通过中间件访问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