JwtAdminMiddleware.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Constants\HttpStatus;
  4. use App\Models\Admin;
  5. use Closure;
  6. use App\Services\JwtService;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Cache;
  9. class JwtAdminMiddleware
  10. {
  11. protected $jwtService;
  12. public function __construct(JwtService $jwtService)
  13. {
  14. $this->jwtService = $jwtService;
  15. }
  16. public function handle(Request $request, Closure $next)
  17. {
  18. $authHeader = $request->header('Authorization');
  19. if (empty($authHeader)) {
  20. $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;
  21. return response()->json([
  22. 'code' => $code,
  23. 'timestamp' => time(),
  24. 'msg' => __('messages.' . $code),
  25. 'data' => []
  26. ]);
  27. }
  28. $token = str_replace('Bearer ', '', $authHeader);
  29. $user = $this->jwtService->validateToken($token);
  30. if ($user) {
  31. $request->user = Admin::findOrFail($user->user_id);
  32. //单点登录
  33. // $oldToken = Cache::get("user_{$request->user->id}_jwt");
  34. // if ($oldToken !== $token) {
  35. // $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;
  36. // return response()->json([
  37. // 'code' => $code,
  38. // 'timestamp' => time(),
  39. // 'msg' => __('messages.' . $code),
  40. // 'data' => []
  41. // ]);
  42. // }
  43. return $next($request);
  44. }
  45. $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;
  46. return response()->json([
  47. 'code' => $code,
  48. 'timestamp' => time(),
  49. 'msg' => __('messages.' . $code),
  50. 'data' => []
  51. ]);
  52. }
  53. }