wesmiler 2 maanden geleden
bovenliggende
commit
49454b55e0
6 gewijzigde bestanden met toevoegingen van 76 en 10 verwijderingen
  1. 3 0
      .env
  2. 5 2
      app/Http/Middleware/WebLogin.php
  3. 4 7
      app/Services/Api/MemberService.php
  4. 62 0
      app/Services/JwtService.php
  5. 1 0
      composer.json
  6. 1 1
      composer.lock

+ 3 - 0
.env

@@ -29,6 +29,9 @@ DB_USERNAME=nn2026012201
 DB_DATABASE=nn2026012201
 DB_PASSWORD=f3WbTWcxL6TMKxCf
 
+#JWT配置
+JWT_KEY=34c68cdccb5b6feb4f7f0a5ede9f5932
+JWT_TTL=
 
 FILESYSTEM_DRIVER=public # 文件系统
 

+ 5 - 2
app/Http/Middleware/WebLogin.php

@@ -4,6 +4,7 @@
 namespace App\Http\Middleware;
 
 use App\Helpers\Jwt;
+use App\Services\JwtService;
 use App\Services\RedisService;
 use Closure;
 use Illuminate\Auth\Middleware\Authenticate as Middleware;
@@ -32,8 +33,10 @@ class WebLogin extends Middleware
             $token = trim($token);
             if($token){
                 // JWT解密token
-                $jwt = new Jwt();
-                $userId = $jwt->verifyToken($token);
+                //$jwt = new Jwt();
+               // $userId = $jwt->verifyToken($token);
+                $userId = JwtService::make()->verifyToken($token);
+
             }else{
                 return response()->json(message(1035, false, [], 403))->setEncodingOptions(256);
             }

+ 4 - 7
app/Services/Api/MemberService.php

@@ -11,13 +11,13 @@
 
 namespace App\Services\Api;
 
-use App\Helpers\Jwt;
 use App\Models\ActionLogModel;
 use App\Models\BalanceLogModel;
 use App\Models\MemberBankModel;
 use App\Models\MemberModel;
 use App\Models\OrderModel;
 use App\Services\BaseService;
+use App\Services\JwtService;
 use App\Services\MpService;
 use App\Services\RedisService;
 use App\Services\SmsService;
@@ -124,8 +124,7 @@ class MemberService extends BaseService
 
 
         // 获取登录授权token
-        $jwt = new Jwt('jwt_rship_app');
-        $token = $jwt->getToken($userId);
+        $token = JwtService::make()->encode($userId);
 
         // 结果返回
         $result = [
@@ -269,8 +268,7 @@ class MemberService extends BaseService
         }
 
         // 获取登录授权token
-        $jwt = new Jwt();
-        $token = $jwt->getToken($userId);
+        $token = JwtService::make()->encode($userId);
 
         // 结果返回
         $result = [
@@ -410,8 +408,7 @@ class MemberService extends BaseService
         }
 
         // 获取登录授权token
-        $jwt = new Jwt('jwt_jd_app');
-        $token = $jwt->getToken($userId);
+        $token = JwtService::make()->encode($userId);
 
         // 结果返回
         $result = [

+ 62 - 0
app/Services/JwtService.php

@@ -0,0 +1,62 @@
+<?php
+namespace App\Services;
+
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+/**
+ * JWT服务管理-服务类
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Services
+ */
+class JwtService extends BaseService
+{
+    protected static $instance = null;
+    protected $alg = 'HS256';
+
+    /**
+     * 静态入口
+     */
+    public static function make(){
+        if(!self::$instance){
+            self::$instance = new static();
+        }
+
+        return self::$instance;
+    }
+
+    public function encode($data, $iss='',$ttl=0)
+    {
+        $payload = array(
+            "iss" => $iss,
+            "aud" => '',
+            "iat" => time(),
+            "nbf" => time(),
+            "exp" => time() + ($ttl?$ttl:env('JWT_TTL',3600)),  // 有效期
+            "data" => $data
+        );
+        return JWT::encode($payload, env('JWT_KEY'), $this->alg);
+    }
+
+    public function verifyToken($token)
+    {
+       try {
+           $payload = JWT::decode($token, new Key(env('JWT_KEY'), $this->alg));
+           if(empty($payload)){
+               $this->error = 'TOKEN无效';
+               return false;
+           }
+
+           if($payload->exp<time()){
+               $this->error = 'TOKEN已过期';
+               return false;
+           }
+
+           return $payload->data;
+       } catch (\Exception $exception){
+           $this->error = $exception->getMessage();
+           return false;
+       }
+    }
+}

+ 1 - 0
composer.json

@@ -12,6 +12,7 @@
         "ext-json": "*",
         "cboden/ratchet": "^0.4.4",
         "fideloper/proxy": "^4.4",
+        "firebase/php-jwt": "^6.1",
         "fruitcake/laravel-cors": "^2.0",
         "fukuball/jieba-php": "dev-master",
         "gregwar/captcha": "^1.1",

+ 1 - 1
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4b8f74a6a430eca0c1df9852a8be3210",
+    "content-hash": "674157fc281d4efd8a5b95110ca8f2b9",
     "packages": [
         {
             "name": "asm89/stack-cors",