Explorar el Código

增加api验签

lh hace 1 día
padre
commit
5488e5ca96
Se han modificado 3 ficheros con 20 adiciones y 13 borrados
  1. 1 0
      app/Http/Controllers/Book/BookController.php
  2. 10 11
      app/Http/Middleware/CheckSign.php
  3. 9 2
      routes/api.php

+ 1 - 0
app/Http/Controllers/Book/BookController.php

@@ -163,6 +163,7 @@ class BookController extends BaseController
     public function uploadAudioEffect(Request $request) {
         $data = $request->all();
         $file = $request->file('file');
+        dd(123);
         $result = $this->bookService->uploadAudioEffect($data, $file);
         return $this->success($result);
     }

+ 10 - 11
app/Http/Middleware/CheckSign.php

@@ -23,12 +23,7 @@ class CheckSign
     {
         $params = $request->all();
         $token = $request->header('d-token', '');
-        $token_data = UserCache::getTokenData($token);
-        // 未登录跳过验签
-        if (!getProp($token_data, 'uid')) return $next($request);
-        $uid = getProp($token_data, 'uid');
-        // 老用户跳过验签
-        if ($uid <= 479) return $next($request);
+        if (!$token) Utils::throwError(ErrorConst::NOT_LOGIN);
 
         $referer_url = '';
         if (isset($params['_url'])) {
@@ -39,22 +34,26 @@ class CheckSign
         if (env('CHECK_SIGN') && $params) {
             $param_sign = getProp($params, 'sign');
             $timestamp = getProp($params, 'timestamp');
+            $check_params = [
+                'd-token'   => $token,
+                'nonce_str' => getProp($params, 'nonce_str'),
+                'timestamp' => $timestamp,
+            ];
             if (!getProp($params, 'nonce_str') || !$timestamp) {
                 Log::info('验签失败, 请求参数不正确;传参: '.json_encode($params, 256));
                 Utils::throwError('1002:数据异常,请求参数不正确');
             }
             if (time() - $timestamp > 300) {
                 Log::info('验签失败, 签名5分钟内有效;传参: '.json_encode($params, 256));
-                Utils::throwError('1002:数据异常,请求参数不正确');
+                Utils::throwError('1002:数据异常,签名5分钟内有效');
             }
 
             foreach ($params as $k=>$v) {
                 if (!$v) unset($params[$k]);
             }
 
-            unset($params['sign']);
-            ksort($params);
-            $str = strtoupper(http_build_query($params));
+            ksort($check_params);
+            $str = strtoupper(http_build_query($check_params));
             $sign = md5($str.'&key='.env('SIGN_SALT'));
             if ($param_sign != $sign) {
                 $params['_url'] = $referer_url;
@@ -62,7 +61,7 @@ class CheckSign
                 $params['check_sign'] = $sign;
                 $params['check_str'] = $str.'&key='.env('SIGN_SALT');
                 Log::info('验签失败, 签名不正确;传参: '.json_encode($params, 256));
-                Utils::throwError('1002:数据异常,请求参数不正确');
+                Utils::throwError('1002:数据异常,签名不正确');
             }
         }
 

+ 9 - 2
routes/api.php

@@ -37,14 +37,21 @@ Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin']], f
         // 音效
         Route::get('audioEffects', [BookController::class, 'audioEffects']);
         Route::get('audioEffectList', [BookController::class, 'audioEffectList']);
-        Route::post('uploadAudioEffect', [BookController::class, 'uploadAudioEffect']);
+        
         Route::post('editAudioEffect', [BookController::class, 'editAudioEffect']);
 
         // bgm
         Route::get('bgms', [BookController::class, 'bgms']);
         Route::get('bgmList', [BookController::class, 'bgmList']);
-        Route::post('uploadBgm', [BookController::class, 'uploadBgm']);
+        
         Route::post('editBgm', [BookController::class, 'editBgm']);
+
+        
+    });
+
+    Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin', 'checkSign'], 'prefix' => 'book'], function () {
+        Route::post('uploadAudioEffect', [BookController::class, 'uploadAudioEffect']);
+        Route::post('uploadBgm', [BookController::class, 'uploadBgm']);
     });
 
     Route::group(['prefix' => 'timbre'], function () {