Explorar o código

fix:修改token验证方式

zhaojing %!s(int64=2) %!d(string=hai) anos
pai
achega
003da47af0

+ 1 - 0
package.json

@@ -57,6 +57,7 @@
     "ahooks": "^3.1.9",
     "antd": "^4.17.0",
     "classnames": "^2.3.0",
+    "crypto-js": "^4.1.1",
     "lodash": "^4.17.0",
     "moment": "^2.29.0",
     "omit.js": "^2.0.2",

+ 31 - 29
src/app.tsx

@@ -1,7 +1,8 @@
 import { PageLoading } from '@ant-design/pro-layout';
 import { history, useModel } from 'umi';
-import { checkToken, reFreshCheckToken } from '@/services/sagacare_service/environment';
+import { checkToken, reFreshCheckToken, queryUser } from '@/services/sagacare_service/environment';
 import { projectObj } from '@/config/api.js';
+import { decrypt, deal_locationsearch } from '@/config/screate.js';
 import UserStorage from '@/config/sagacare/sagacare_user';
 const loginPath = '/noAuth';
 
@@ -21,23 +22,21 @@ export async function getInitialState(): Promise<{
   //fetchUserInfo?: () => Promise<API.CurrentUser | undefined>;
 }> {
   const { location } = history;
-
+  let currentUser = {};
   let access_token: any = location.query.access_token;
   let refresh_token: any = location.query.refresh_token;
 
+  var dealRes = deal_locationsearch();
+  var persagyToken = dealRes[0];
+  let userName = persagyToken && decrypt(persagyToken);
+
   //如果有值 存起来
   if (access_token) {
     localStorage.setItem('access_token', access_token);
-    console.log("localStorage.getItem('access_token')", localStorage.getItem('access_token'));
   }
   if (refresh_token) {
     localStorage.setItem('refresh_token', refresh_token);
   }
-  console.log('getInitialState');
-  //如果没有  取缓存
-  //   if (!refresh_token) {
-  //     refresh_token = localStorage.getItem('refresh_token');
-  //   }
 
   const fetchUser = async () => {
     try {
@@ -45,7 +44,6 @@ export async function getInitialState(): Promise<{
       //if (!access_token) return; //随后去掉
       //验证acces_token 获取用户数据
       const res = await checkToken({ token: access_token });
-
       var resUser = res.data;
     } catch (err) {
       history.push(loginPath);
@@ -55,7 +53,26 @@ export async function getInitialState(): Promise<{
       //获取用户信息 并储存
       var userObj = UserStorage.getInstance();
       userObj.setUser(resUser);
+      return resUser;
+    } else {
+      // history.push(loginPath);
+      return undefined;
+    }
+  };
 
+  const queryUserFunc = async () => {
+    try {
+      //验证acces_token 获取用户数据
+      const res2 = await queryUser({ criteria: { username: userName } });
+      var resUser = res2.content[0];
+    } catch (err) {
+      history.push(loginPath);
+    }
+
+    if (resUser) {
+      //获取用户信息 并储存
+      var userObj = UserStorage.getInstance();
+      userObj.setUser(resUser);
       return resUser;
     } else {
       history.push(loginPath);
@@ -63,11 +80,14 @@ export async function getInitialState(): Promise<{
     }
   };
 
-  let currentUser = {};
   //projectId = 'Pj1101080259';
   if (projectObj.projectId == 'Pj3301100002') {
     //之江项目 验证token
-    currentUser = await fetchUser();
+    if (userName) {
+      currentUser = await queryUserFunc();
+    } else {
+      history.push(loginPath);
+    }
   } else {
     //非之江项目
     let tempUser = {
@@ -100,24 +120,6 @@ export async function getInitialState(): Promise<{
     }, 60000);
   };
 
-  //await reFreshUser();
-
-  // || {
-  //   companyId: '245e7060643811eb934c0237aedb39a6',
-  //   createDate: 1642388952000,
-  //   depName: '[["研发算法组","上格云","博锐尚格科技股份有限公司"]]',
-  //   firstUseTime: '2020-10-16 18:37:05',
-  //   id: '2d2440710d4548f3afa55c4e8244538e',
-  //   job: '研发工程师',
-  //   manageUserType: 1,
-  //   name: '赵小静',
-  //   phone: '18801040736',
-  //   projectId: 'Pj1101080259',
-  //   status: 2,
-  //   type: 1,
-  //   updateDate: 1642388952000,
-  // };
-
   return {
     currentUser,
     fetchUser,

+ 32 - 0
src/config/screate.js

@@ -0,0 +1,32 @@
+const cryptojs = require('crypto-js'); //引用AES源码js
+
+// 解密
+export function decrypt(word, keystr = '1234123412341234', ivstr = '1234123412341234') {
+  //keystr = keystr ? keystr : ;
+  //ivstr = ivstr ? ivstr : ;
+  var key = cryptojs.enc.Utf8.parse(keystr);
+  let iv = cryptojs.enc.Utf8.parse(ivstr);
+  var decrypt = cryptojs.AES.decrypt(word, key, {
+    iv,
+    mode: cryptojs.mode.CBC,
+    padding: cryptojs.pad.Pkcs7,
+  });
+  return decrypt.toString(cryptojs.enc.Utf8);
+}
+export function deal_locationsearch() {
+  var search = location.search.substring(1).split('&'); //初步处理数据-->去掉?分开多个键值对
+
+  var key = []; //键数组
+  var keyvalue = []; //值数组
+  for (var i = 0; i < search.length; i++) {
+    //var pos = search[i].split("=");
+    //debugger;
+    if (search[i].indexOf('persagyToken') > -1) {
+      var index = search[i].indexOf('=');
+      var val = search[i].substring(index + 1);
+      keyvalue.push(val);
+    }
+  }
+
+  return keyvalue; //最终返回值为对象
+}

+ 13 - 1
src/services/sagacare_service/environment.ts

@@ -14,7 +14,7 @@ function commonParams() {
 
   return `openid=${user.id}&pubname=${pubname}&projectId=${getProjectId()}&userId=${
     user.id
-  }&userName=${user.name}&userPhone=${user.phone}`;
+  }&userName=${user.username}&userPhone=${user.phone}`;
 }
 
 export async function getMapList(body: any, options?: { [key: string]: any }) {
@@ -158,6 +158,17 @@ export async function querySpace(body: any, options?: { [key: string]: any }) {
     },
   );
 }
+export async function queryUser(body: any, options?: { [key: string]: any }) {
+  //
+  return request<API.EnvironmentParam>(`/sgadmin/duoduo-service/user-center/server/user/query`, {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    ...(options || {}),
+    data: body,
+  });
+}
 
 export async function checkToken(header: any, options?: { [key: string]: any }) {
   return request<API.EnvironmentParam>(`/sgadmin/duoduo-service/setup-service/user/zjCheckToken`, {
@@ -169,6 +180,7 @@ export async function checkToken(header: any, options?: { [key: string]: any })
     ...(options || {}),
   });
 }
+
 //http://10.100.28.79/sgadmin/sso//auth/zjFreshCheckToken
 export async function reFreshCheckToken(header: any, options?: { [key: string]: any }) {
   return request<API.EnvironmentParam>(`/sgadmin/sso/auth/zjFreshCheckToken`, {

+ 114 - 96
src/services/sagacare_service/equipment.js

@@ -3,139 +3,157 @@ import { projectObj } from '@/config/api.js';
 import UserStorage from '@/config/sagacare/sagacare_user';
 
 function getProjectId() {
-    //const id = window.localStorage.getItem('localProjectId')
-    const id = projectObj.projectId
-    return id;
+  //const id = window.localStorage.getItem('localProjectId')
+  const id = projectObj.projectId;
+  return id;
 }
 
 function commonParams() {
-    var userObj = UserStorage.getInstance();
-     const user = userObj.getUser();
-     var pubname='sgadmin';
-    return `openid=${user.id}&pubname=${pubname}&projectId=${getProjectId()}&userId=${user.id}&userName=${user.name}&userPhone=${user.phone}`;
+  var userObj = UserStorage.getInstance();
+  const user = userObj.getUser();
+  var pubname = 'sgadmin';
+  return `openid=${user.id}&pubname=${pubname}&projectId=${getProjectId()}&userId=${
+    user.id
+  }&userName=${user.username}&userPhone=${user.phone}`;
 }
 
 // function commonParams() {
 //     return `openid=9a1ecfbacb6b4f249bf2dd3ec7793ead&pubname=sagacareAndtenantslink&projectId=${getProjectId()}&userName=%E5%AE%89%E5%B0%8F%E9%9C%9E&userPhone=17611228068&userId=9a1ecfbacb6b4f249bf2dd3ec7793ead`;
 // }
 
-
 //窗帘  设置设备
 //窗帘  设置设备
 export const setEquipeHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/object/eqp/infocode/set?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: JSON.stringify(params),
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
-}
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/object/eqp/infocode/set?${commonParams()}`,
+    {
+      method: 'POST',
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: JSON.stringify(params),
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
+};
 
 //窗帘 获取设备
 export const getObjectDataEqpGroupHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/object/objectDataEqpGroup/query?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: JSON.stringify(params),
-        headers: {
-            'Content-Type': 'application/json',
-        }
-    });
-}
-
-
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/object/objectDataEqpGroup/query?${commonParams()}`,
+    {
+      method: 'POST',
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: JSON.stringify(params),
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
+};
 
 // 灯的状态
 export const getLampHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/light/status/query?${commonParams()}&spaceId=${params}`, {
-        skipErrorHandler:true,
-        method: 'GET',
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/light/status/query?${commonParams()}&spaceId=${params}`,
+    {
+      skipErrorHandler: true,
+      method: 'GET',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
 };
 
-
 // 批量 开关灯
 export const setallLampHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/light/onoff/set?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: JSON.stringify(params),
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(`/sgadmin/duoduo-service/duoduoenv-service/light/onoff/set?${commonParams()}`, {
+    method: 'POST',
+    isNotShowErrorToast: true,
+    errorSave: true,
+    data: JSON.stringify(params),
+    headers: {
+      'Content-Type': 'application/json',
+    },
+  });
 };
 
-// 开关失败时 定时查询灯状态 
+// 开关失败时 定时查询灯状态
 export const getStatusHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/light/onoff/setSatus?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: JSON.stringify(params),
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/light/onoff/setSatus?${commonParams()}`,
+    {
+      method: 'POST',
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: JSON.stringify(params),
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
 };
 
-
 //  空调 - 调节文案/空调信息
 export const getFeedbackDocumentsHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/custom/feedback/documents?${commonParams()}`, {
-        isNotShowErrorToast: true,
-        errorSave: true,
-        method: 'POST',
-        data: JSON.stringify(params),
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/custom/feedback/documents?${commonParams()}`,
+    {
+      isNotShowErrorToast: true,
+      errorSave: true,
+      method: 'POST',
+      data: JSON.stringify(params),
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
 };
 
 //  空调 调节
 export const changeAirHttp = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/custom/feedbackCreate/v2?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: JSON.stringify({ ...params, projectId: getProjectId() }),
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/custom/feedbackCreate/v2?${commonParams()}`,
+    {
+      method: 'POST',
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: JSON.stringify({ ...params, projectId: getProjectId() }),
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
 };
 
 // 空间环境质量
 export const getSpaceAdjustList = (params) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/space/property?${commonParams()}`, {
-        method: 'POST',
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: params,
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
-}
+  return request(`/sgadmin/duoduo-service/duoduoenv-service/space/property?${commonParams()}`, {
+    method: 'POST',
+    isNotShowErrorToast: true,
+    errorSave: true,
+    data: params,
+    headers: {
+      'Content-Type': 'application/json',
+    },
+  });
+};
 //  批量空调 调节
 export const changeAllAirHttp = (body) => {
-    return request(`/sgadmin/duoduo-service/duoduoenv-service/custom/feedbackCreate/v2Batch?${commonParams()}`, {
-        method: 'POST',
-        //timeout:100000,
-        isNotShowErrorToast: true,
-        errorSave: true,
-        data: body,
-        headers: {
-            'Content-Type': 'application/json',
-        },
-    });
+  return request(
+    `/sgadmin/duoduo-service/duoduoenv-service/custom/feedbackCreate/v2Batch?${commonParams()}`,
+    {
+      method: 'POST',
+      //timeout:100000,
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: body,
+      headers: {
+        'Content-Type': 'application/json',
+      },
+    },
+  );
 };