老莫的笔记本  
  
查看: 720|回复: 0

一个中间件,拿来验证tymon/jwt-auth

[复制链接]

662

主题

878

帖子

5133

积分

超级版主

Rank: 8Rank: 8

积分
5133
发表于 2021-8-16 11:43:31 | 显示全部楼层 |阅读模式
大环境 laravel 5.8   tymon/jwt-auth 1.0
  1. <?php



  2. namespace App\Http\Middleware;



  3. use Closure;

  4. use Illuminate\Support\Facades\Auth;

  5. use Tymon\JWTAuth\Facades\JWTAuth;

  6. use Tymon\JWTAuth\Exceptions\TokenExpiredException;

  7. use Tymon\JWTAuth\Exceptions\JWTException;

  8. class MyJwt

  9. {

  10.     /**

  11.      *

  12.      * Handle an incoming request.

  13.      *

  14.      * @param  \Illuminate\Http\Request  $request

  15.      * @param  \Closure  $next

  16.      * @return mixed

  17.      */

  18.     public function handle($request, Closure $next)

  19.     {

  20.         $token = $request->header('token');
  21.         $request->headers->set('Accept', 'application/json' );
  22.         $request->headers->set('Authorization', 'Bearer ' .$token);
  23.         $request->headers->set('content-type', 'application/x-www-form-urlencoded');
  24.         
  25.         if($request->getMethod() == "OPTIONS") {
  26.             return Response::make('OK', 200, $headers);
  27.         }

  28.         
  29.         try {
  30.                 if(! $user = JWTAuth::parseToken()->authenticate()){
  31.                     return response()->json([
  32.                         'errcode' => 400001,
  33.                         'errmsg' => '无此用户'
  34.                     ], 404);
  35.                 }  
  36.             
  37.             } catch (TokenExpiredException $e) {
  38.                 return response()->json([
  39.                     'errcode' => 400001,
  40.                     'errmsg' => 'token 过期'
  41.                 ]);
  42.             } catch (TokenInvalidException $e) {
  43.                 return response()->json([
  44.                     'errcode' => 400001,
  45.                     'errmsg' => '无效的token'
  46.                 ]);
  47.             } catch (JWTException $e) {
  48.                 // return response()->json(['token_absent'], $e->getStatusCode());     // 不存在
  49.                 return response()->json([
  50.                     'errcode' => 400001,
  51.                     'errmsg' => 'token不存在'
  52.                 ]);
  53.             }
  54.            
  55.          
  56.                     // return response()->json(compact('user')); 这个是结果值,是轻求到的数据,可以放在 $request 中往后继续带
  57.             $headersData = response()->json(compact('user'));

  58.             $request->attributes->add(['userinfo'=>$headersData->original['user'] ]);

  59.             
  60.            return $next($request);


  61.         // 下面采集自另外一个地方,其实也可以正常用

  62.         // try {
  63.         //     if (!$user = JWTAuth::toUser(JWTAuth::getToken())){
  64.         //         return response()->json([
  65.         //             'errcode' => 400004,
  66.         //             'errmsg' => '无此用户'
  67.         //         ], 404);
  68.         //     }

  69.         // } catch (TokenExpiredException $e) {

  70.         //     return response()->json([
  71.         //         'errcode' => 400001,
  72.         //         'errmsg' => 'token 过期'
  73.         //     ]);

  74.         // } catch (TokenInvalidException $e) {

  75.         //     return response()->json([
  76.         //         'errcode' => 400003,
  77.         //         'errmsg' => 'token 失效'
  78.         //     ]);

  79.         // } catch (JWTException $e) {

  80.         //     return response()->json([
  81.         //         'errcode' => 400002,
  82.         //         'errmsg' => 'token 参数错误'
  83.         //     ]);

  84.         // }

  85.         // $headersData = response()->json(compact('user'));

  86.         // $request->attributes->add(['userinfo'=>$headersData->original['user'] ]);

  87.         // return $next($request);



  88.     }



  89. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表