瀏覽代碼

feat: pc端接入vue-anti解密拦截器以及反爬弹窗

cuiyalong 1 年之前
父節點
當前提交
a5cc2b85b5

+ 1 - 0
apps/bigmember_pc/package.json

@@ -16,6 +16,7 @@
     "@jianyu/easy-inject-qiankun": "^0.1.11",
     "@jianyu/icon": "^0.1.7",
     "@jianyu/reset.css": "~0.1.1",
+    "@jy/vue-anti": "workspace:^",
     "@jy/data-models": "workspace:^",
     "@jy/pc-ui": "workspace:^",
     "@jy/util": "workspace:^",

+ 7 - 1
apps/bigmember_pc/src/api/index.js

@@ -1,4 +1,10 @@
-import service from './interceptors-anti'
+import service from './service'
+
+// 必须先注册反爬弹窗,后注册解密方法。因为反爬弹窗会修改拦截器
+import './interceptors-anti'
+import './interceptors-decrypt'
+
+import './interceptors'
 import './interceptors-data-models'
 
 export default service

+ 4 - 81
apps/bigmember_pc/src/api/interceptors-anti.js

@@ -1,82 +1,5 @@
-import axios from './axios'
-import $ from 'jquery'
-import qs from 'qs'
+import service from './service'
+import { registerAntiInterceptors } from '@jy/vue-anti'
 
-// 此处添加全局请求拦截
-// $.ajaxPrefilter((options, originalOptions, jqXHR) => {
-//   console.log('options', options)
-//   console.log('originalOptions', originalOptions)
-//   console.log('jqXHR', jqXHR)
-// })
-// jquery请求
-const ajax = (config) =>
-  new Promise((resolve, reject) => {
-    // 获取url参数
-    const url = config.baseURL
-      ? config.baseURL + config.url
-      : import.meta.env.VITE_APP_BASE_API + config.url
-
-    const ajaxConf = {
-      url: url,
-      method: config.method || 'get'
-    }
-
-    // 获取data数据
-    const data = config.data
-    const params = config.params
-    const headers = config.headers
-
-    if (ajaxConf.method.toLowerCase() === 'post') {
-      if (data) {
-        if (typeof data === 'string') {
-          // formData
-          ajaxConf.data = qs.parse(data)
-        } else {
-          // json
-          ajaxConf.contentType = 'application/json;charset=UTF-8'
-          ajaxConf.data = JSON.stringify(data)
-        }
-      }
-    } else if (ajaxConf.method.toLowerCase() === 'get') {
-      if (params) {
-        ajaxConf.data = params
-      }
-    }
-    if (headers) {
-      ajaxConf.headers = headers
-    }
-
-    // 此处数据预处理
-    // 此处添加请求拦截(请求发送前处理参数)
-
-    $.ajax({
-      ...ajaxConf,
-      beforeSend: (xhr) => {
-        // 此处请求预处理
-        // 此处添加请求拦截(请求发送前处理参数)
-      },
-      success: (res) => {
-        // 此处添加响应拦截
-        if (
-          import.meta.env.NODE_ENV === 'production' &&
-          config &&
-          !config.noIntercept &&
-          !window.$noIntercept
-        ) {
-          const noPermissionText = ['未登录', '需要登录', '需要登录!']
-          const noPermission = noPermissionText.includes(res.error_msg)
-          if (noPermission) {
-            location.href = '/notin/page'
-            return
-          }
-        }
-        resolve(res)
-      },
-      error: (err) => {
-        reject(err)
-      }
-    })
-  })
-
-const useJQueryAjax = !!window.antiAdd
-export default useJQueryAjax ? ajax : axios
+registerAntiInterceptors(service)
+export default service

+ 1 - 1
apps/bigmember_pc/src/api/interceptors-data-models.js

@@ -1,4 +1,4 @@
-import service from './interceptors-anti'
+import service from './service'
 import { injectRequest } from '@jy/data-models'
 
 injectRequest(service)

+ 5 - 0
apps/bigmember_pc/src/api/interceptors-decrypt.js

@@ -0,0 +1,5 @@
+import service from './service'
+import { registerDecryptInterceptor } from '@jy/vue-anti'
+
+registerDecryptInterceptor(service)
+export default service

+ 1 - 6
apps/bigmember_pc/src/api/axios.js → apps/bigmember_pc/src/api/interceptors.js

@@ -1,9 +1,4 @@
-import axios from 'axios'
-
-console.log('[debug]当前环境:', import.meta.env)
-const service = axios.create({
-  baseURL: import.meta.env.VITE_APP_BASE_API
-})
+import service from './service'
 
 service.interceptors.request.use(
   (config) => {

+ 8 - 0
apps/bigmember_pc/src/api/service.js

@@ -0,0 +1,8 @@
+import axios from 'axios'
+
+console.log('[debug]当前环境:', import.meta.env)
+const service = axios.create({
+  baseURL: import.meta.env.VITE_APP_BASE_API
+})
+
+export default service

+ 10 - 23
pnpm-lock.yaml

@@ -72,6 +72,9 @@ importers:
       '@jy/util':
         specifier: workspace:^
         version: link:../../packages/util
+      '@jy/vue-anti':
+        specifier: workspace:^
+        version: link:../../packages/vue-anti
       '@sentry/vue':
         specifier: ^7.64.0
         version: 7.64.0(vue@2.7.16)
@@ -614,9 +617,6 @@ importers:
       qs:
         specifier: ^6.11.0
         version: 6.11.2
-      vant:
-        specifier: 2.12.44
-        version: 2.12.44(vue@2.7.14)
       vue:
         specifier: ^2.6.14
         version: 2.7.14
@@ -6326,7 +6326,7 @@ packages:
     dependencies:
       '@babel/core': 7.22.9
       '@vue/babel-preset-app': 5.0.8(@babel/core@7.22.9)(core-js@3.31.1)(vue@2.7.14)
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(sass-loader@12.6.0)(vue-template-compiler@2.7.14)(vue@2.7.14)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
       '@vue/cli-shared-utils': 5.0.8
       babel-loader: 8.3.0(@babel/core@7.22.9)(webpack@5.88.2)
       thread-loader: 3.0.4(webpack@5.88.2)
@@ -6371,7 +6371,7 @@ packages:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
       eslint: '>=7.5.0'
     dependencies:
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.16)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
       '@vue/cli-shared-utils': 5.0.8
       eslint: 7.32.0
       eslint-webpack-plugin: 3.2.0(eslint@7.32.0)(webpack@5.88.2)
@@ -6391,7 +6391,7 @@ packages:
     peerDependencies:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
     dependencies:
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.16)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
       '@vue/cli-shared-utils': 5.0.8
     transitivePeerDependencies:
       - encoding
@@ -6402,7 +6402,7 @@ packages:
     peerDependencies:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
     dependencies:
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.16)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
       '@vue/cli-shared-utils': 5.0.8
     transitivePeerDependencies:
       - encoding
@@ -6413,7 +6413,7 @@ packages:
     peerDependencies:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
     dependencies:
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.16)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
     dev: true
 
   /@vue/cli-plugin-vuex@5.0.8(@vue/cli-service@5.0.1):
@@ -6421,7 +6421,7 @@ packages:
     peerDependencies:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
     dependencies:
-      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.16)
+      '@vue/cli-service': 5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14)
     dev: true
 
   /@vue/cli-service@5.0.1(@babel/core@7.22.9)(lodash@4.17.21)(sass-loader@12.0.0)(vue-template-compiler@2.6.14)(vue@2.7.14):
@@ -15835,19 +15835,6 @@ packages:
       spdx-expression-parse: 3.0.1
     dev: true
 
-  /vant@2.12.44(vue@2.7.14):
-    resolution: {integrity: sha512-0ZRq0v+26Ny6Ezt3M1GEN5KLEh6vVp6rBmQENi6jd0HejgpwfCRUWTFCH9sQqB3LhfxJ7ywHmrLAn5oj1eHozA==}
-    peerDependencies:
-      vue: '>= 2.6.0'
-    dependencies:
-      '@babel/runtime': 7.22.6
-      '@vant/icons': 1.8.0
-      '@vant/popperjs': 1.3.0
-      '@vue/babel-helper-vue-jsx-merge-props': 1.4.0
-      vue: 2.7.14
-      vue-lazyload: 1.2.3
-    dev: false
-
   /vant@2.12.44(vue@2.7.16):
     resolution: {integrity: sha512-0ZRq0v+26Ny6Ezt3M1GEN5KLEh6vVp6rBmQENi6jd0HejgpwfCRUWTFCH9sQqB3LhfxJ7ywHmrLAn5oj1eHozA==}
     peerDependencies:
@@ -15962,7 +15949,7 @@ packages:
       '@types/eslint': 8.44.1
       eslint: 8.37.0
       rollup: 2.79.1
-      vite: 4.3.9(less@4.1.3)(sass@1.63.2)(terser@5.19.2)
+      vite: 4.3.9(sass@1.71.1)(terser@5.19.2)
     dev: true
 
   /vite-plugin-externals@0.6.2(vite@4.3.9):