AuthCheck.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ywl
  5. * Date: 2017/4/21
  6. * Time: 下午10:38
  7. */
  8. namespace App\Http\Middleware;
  9. use Closure;
  10. use Illuminate\Support\Facades\DB;
  11. use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
  12. use Tymon\JWTAuth\Exceptions\JWTException;
  13. use Tymon\JWTAuth\Facades\JWTAuth;
  14. use Tymon\JWTAuth\JWT;
  15. use Tymon\JWTAuth\Payload;
  16. class AuthCheck
  17. {
  18. public function handle($request, Closure $next)
  19. {
  20. $auth = JWTAuth::parseToken();
  21. $payload = $auth->getPayload();
  22. $tokenExpired = $payload->get('exp');
  23. // 本应用 auth token 失效都要刷新 token
  24. if ($tokenExpired < time() - 3600) {
  25. try {
  26. $token = $auth->refresh();
  27. } catch (JWTException $e) {
  28. throw new UnauthorizedHttpException('jwt-auth', $e->getMessage(), $e, $e->getCode());
  29. }
  30. $response = $next($request);
  31. $response->headers->set('Authorization', 'Bearer ' . $token);
  32. return $response;
  33. }
  34. return $next($request);
  35. }
  36. }