一个中间件,拿来验证tymon/jwt-auth
大环境 laravel 5.8 tymon/jwt-auth 1.0<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\JWTException;
class MyJwt
{
/**
*
* Handle an incoming request.
*
* @param\Illuminate\Http\Request$request
* @param\Closure$next
* @return mixed
*/
public function handle($request, Closure $next)
{
$token = $request->header('token');
$request->headers->set('Accept', 'application/json' );
$request->headers->set('Authorization', 'Bearer ' .$token);
$request->headers->set('content-type', 'application/x-www-form-urlencoded');
if($request->getMethod() == "OPTIONS") {
return Response::make('OK', 200, $headers);
}
try {
if(! $user = JWTAuth::parseToken()->authenticate()){
return response()->json([
'errcode' => 400001,
'errmsg' => '无此用户'
], 404);
}
} catch (TokenExpiredException $e) {
return response()->json([
'errcode' => 400001,
'errmsg' => 'token 过期'
]);
} catch (TokenInvalidException $e) {
return response()->json([
'errcode' => 400001,
'errmsg' => '无效的token'
]);
} catch (JWTException $e) {
// return response()->json(['token_absent'], $e->getStatusCode()); // 不存在
return response()->json([
'errcode' => 400001,
'errmsg' => 'token不存在'
]);
}
// return response()->json(compact('user')); 这个是结果值,是轻求到的数据,可以放在 $request 中往后继续带
$headersData = response()->json(compact('user'));
$request->attributes->add(['userinfo'=>$headersData->original['user'] ]);
return $next($request);
// 下面采集自另外一个地方,其实也可以正常用
// try {
// if (!$user = JWTAuth::toUser(JWTAuth::getToken())){
// return response()->json([
// 'errcode' => 400004,
// 'errmsg' => '无此用户'
// ], 404);
// }
// } catch (TokenExpiredException $e) {
// return response()->json([
// 'errcode' => 400001,
// 'errmsg' => 'token 过期'
// ]);
// } catch (TokenInvalidException $e) {
// return response()->json([
// 'errcode' => 400003,
// 'errmsg' => 'token 失效'
// ]);
// } catch (JWTException $e) {
// return response()->json([
// 'errcode' => 400002,
// 'errmsg' => 'token 参数错误'
// ]);
// }
// $headersData = response()->json(compact('user'));
// $request->attributes->add(['userinfo'=>$headersData->original['user'] ]);
// return $next($request);
}
}
页:
[1]