12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- /**
- * @copyright Copyright (c) 2021 勾股工作室
- * @license https://opensource.org/licenses/Apache-2.0
- * @link https://www.gougucms.com
- */
- namespace app\api\middleware;
- use Firebase\JWT\JWT;
- use Firebase\JWT\Key;
- use think\facade\Request;
- use think\Response;
- class Auth
- {
- public function handle($request, \Closure $next)
- {
- $token = Request::header('Token');
- if ($token) {
- if (count(explode('.', $token)) != 3) {
- return json(['code'=>404,'msg'=>'非法请求']);
- }
- $config = get_system_config('token');
- //var_dump($config);exit;
- try {
- JWT::$leeway = 60;//当前时间减去60,把时间留点余地
- $decoded = JWT::decode($token, new Key($config['secrect'], 'HS256')); //HS256方式,这里要和签发的时候对应
- //return (array)$decoded;
- $decoded_array = json_decode(json_encode($decoded),TRUE);
- $jwt_data = $decoded_array['data'];
- //$request->uid = $jwt_data['userid'];
- define('JWT_UID', $jwt_data['userid']);
- $response = $next($request);
- return $response;
- //return $next($request);
- } catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
- return json(['code'=>403,'msg'=>'签名错误']);
- }catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
- return json(['code'=>401,'msg'=>'token失效']);
- }catch(\Firebase\JWT\ExpiredException $e) { // token过期
- return json(['code'=>401,'msg'=>'token已过期']);
- }catch(Exception $e) { //其他错误
- return json(['code'=>404,'msg'=>'非法请求']);
- }catch(\UnexpectedValueException $e) { //其他错误
- return json(['code'=>404,'msg'=>'非法请求']);
- } catch(\DomainException $e) { //其他错误
- return json(['code'=>404,'msg'=>'非法请求']);
- }
- } else {
- return json(['code'=>404,'msg'=>'token不能为空']);
- }
- return $next($request);
- }
- }
|