Browse Source

chore: 禁止核心环境变量暴露全局window

master
wangxiang 2 years ago
parent
commit
5da179699e
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 14
      .env
  2. 2
      build/utils.ts
  3. 4
      src/api/platform/core/controller/user.ts
  4. 6
      src/hooks/setting/index.ts
  5. 6
      src/utils/env.ts
  6. 2
      src/utils/http/axios/index.ts
  7. 12
      types/config.d.ts

14
.env

@ -7,14 +7,18 @@ VITE_GLOB_APP_TITLE = 康来智慧冷链平台
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符 # 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
VITE_GLOB_APP_SHORT_NAME = kicc_admin VITE_GLOB_APP_SHORT_NAME = kicc_admin
# 开启微前端模式
VITE_GLOB_APP_OPEN_QIANKUN=true
# client # client
VITE_GLOB_CLIENT_ID = kicc VITE_CLIENT_ID = kicc
# client-secret # client-secret
VITE_GLOB_CLIENT_SECRET = kicc VITE_CLIENT_SECRET = kicc
# 网关ase密码解密密钥,保持跟后端密钥一致,必须要有否则登录会失败的 # 网关ase密码解密密钥,保持跟后端密钥一致,必须要有否则登录会失败的
VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET = changsha-kanglai VITE_GATEWAY_ASE_ENCODE_SECRET = changsha-kanglai
# 授权客户端密钥
VITE_AUTH_CLIENT = [["kicc_lock","kicc_lock"],["kics","kics"],["klab","klab"]]
# 开启微前端模式
VITE_GLOB_APP_OPEN_QIANKUN=true

2
build/utils.ts

@ -38,7 +38,7 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
if (envName === 'VITE_PORT') { if (envName === 'VITE_PORT') {
realName = Number(realName); realName = Number(realName);
} }
if (envName === 'VITE_PROXY') { if (envName === 'VITE_PROXY' || envName === 'VITE_AUTH_CLIENT') {
try { try {
realName = JSON.parse(realName); realName = JSON.parse(realName);
} catch (error) { } catch (error) {

4
src/api/platform/core/controller/user.ts

@ -7,11 +7,9 @@
import type { Captcha, User, LoginParams, TokenEnhancer } from '../entity/user'; import type { Captcha, User, LoginParams, TokenEnhancer } from '../entity/user';
import type { RequestOptions } from '/#/axios'; import type { RequestOptions } from '/#/axios';
import { encryptionLogin } from '/@/utils/cipher'; import { encryptionLogin } from '/@/utils/cipher';
import { useGlobSetting } from '/@/hooks/setting';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import qs from 'qs'; import qs from 'qs';
const globSetting = useGlobSetting();
export enum Api { export enum Api {
login = '/auth_proxy/oauth/token', login = '/auth_proxy/oauth/token',
logout = '/auth_proxy/token/logout', logout = '/auth_proxy/token/logout',
@ -25,7 +23,7 @@ export const login = (params: LoginParams, options?: boolean | RequestOptions) =
// 非对称密钥AES加密处理 // 非对称密钥AES加密处理
const user = encryptionLogin({ const user = encryptionLogin({
data: params, data: params,
key: globSetting.gatewayAseEncodeSecret, key: import.meta.env.VITE_GATEWAY_ASE_ENCODE_SECRET,
param: ['password'] param: ['password']
}); });

6
src/hooks/setting/index.ts

@ -16,9 +16,6 @@ export const useGlobSetting = (): Readonly<GlobConfig> => {
VITE_GLOB_APP_SHORT_NAME, VITE_GLOB_APP_SHORT_NAME,
VITE_GLOB_API_URL_PREFIX, VITE_GLOB_API_URL_PREFIX,
VITE_GLOB_UPLOAD_URL, VITE_GLOB_UPLOAD_URL,
VITE_GLOB_CLIENT_ID,
VITE_GLOB_CLIENT_SECRET,
VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET,
VITE_GLOB_FILE_PREVIEW_URL, VITE_GLOB_FILE_PREVIEW_URL,
VITE_GLOB_APP_OPEN_QIANKUN, VITE_GLOB_APP_OPEN_QIANKUN,
} = getAppEnvConfig(); } = getAppEnvConfig();
@ -34,9 +31,6 @@ export const useGlobSetting = (): Readonly<GlobConfig> => {
shortName: VITE_GLOB_APP_SHORT_NAME, shortName: VITE_GLOB_APP_SHORT_NAME,
urlPrefix: VITE_GLOB_API_URL_PREFIX, urlPrefix: VITE_GLOB_API_URL_PREFIX,
uploadUrl: VITE_GLOB_UPLOAD_URL, uploadUrl: VITE_GLOB_UPLOAD_URL,
clientId: VITE_GLOB_CLIENT_ID,
clientSecret: VITE_GLOB_CLIENT_SECRET,
gatewayAseEncodeSecret: VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET,
filePreviewUrl: VITE_GLOB_FILE_PREVIEW_URL, filePreviewUrl: VITE_GLOB_FILE_PREVIEW_URL,
openQianKun: VITE_GLOB_APP_OPEN_QIANKUN openQianKun: VITE_GLOB_APP_OPEN_QIANKUN
}; };

6
src/utils/env.ts

@ -34,9 +34,6 @@ export function getAppEnvConfig() {
VITE_GLOB_APP_SHORT_NAME, VITE_GLOB_APP_SHORT_NAME,
VITE_GLOB_API_URL_PREFIX, VITE_GLOB_API_URL_PREFIX,
VITE_GLOB_UPLOAD_URL, VITE_GLOB_UPLOAD_URL,
VITE_GLOB_CLIENT_ID,
VITE_GLOB_CLIENT_SECRET,
VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET,
VITE_GLOB_FILE_PREVIEW_URL, VITE_GLOB_FILE_PREVIEW_URL,
VITE_GLOB_APP_OPEN_QIANKUN, VITE_GLOB_APP_OPEN_QIANKUN,
} = ENV; } = ENV;
@ -53,9 +50,6 @@ export function getAppEnvConfig() {
VITE_GLOB_APP_SHORT_NAME, VITE_GLOB_APP_SHORT_NAME,
VITE_GLOB_API_URL_PREFIX, VITE_GLOB_API_URL_PREFIX,
VITE_GLOB_UPLOAD_URL, VITE_GLOB_UPLOAD_URL,
VITE_GLOB_CLIENT_ID,
VITE_GLOB_CLIENT_SECRET,
VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET,
VITE_GLOB_FILE_PREVIEW_URL, VITE_GLOB_FILE_PREVIEW_URL,
VITE_GLOB_APP_OPEN_QIANKUN, VITE_GLOB_APP_OPEN_QIANKUN,
}; };

2
src/utils/http/axios/index.ts

@ -108,7 +108,7 @@ const transform: AxiosTransform = {
requestInterceptors: (config, options) => { requestInterceptors: (config, options) => {
// 请求之前处理config // 请求之前处理config
const token = getAccessToken(); const token = getAccessToken();
const { clientId, clientSecret } = globSetting; const clientId = import.meta.env.VITE_CLIENT_ID, clientSecret = import.meta.env.VITE_CLIENT_SECRET;
const { clientId: customClientId , clientSecret: customClientSecret } = options?.requestOptions || {}; const { clientId: customClientId , clientSecret: customClientSecret } = options?.requestOptions || {};
// 使用token进行请求 // 使用token进行请求
if (token && (config as Recordable)?.requestOptions?.withToken !== false) { if (token && (config as Recordable)?.requestOptions?.withToken !== false) {

12
types/config.d.ts vendored

@ -148,12 +148,6 @@ export interface GlobConfig {
urlPrefix?: string; urlPrefix?: string;
// 项目缩写 // 项目缩写
shortName: string; shortName: string;
// client
clientId: string;
// clientSecret
clientSecret: string;
// 网关ase密码解密密钥,保持跟后端密钥一致,必须要有否则登录会失败的
gatewayAseEncodeSecret: string;
// 文件在线预览网址 // 文件在线预览网址
filePreviewUrl?: string; filePreviewUrl?: string;
// 开启微前端 // 开启微前端
@ -171,12 +165,6 @@ export interface GlobEnvConfig {
VITE_GLOB_APP_SHORT_NAME: string; VITE_GLOB_APP_SHORT_NAME: string;
// 上传网址 // 上传网址
VITE_GLOB_UPLOAD_URL?: string; VITE_GLOB_UPLOAD_URL?: string;
// client
VITE_GLOB_CLIENT_ID: string;
// clientSecret
VITE_GLOB_CLIENT_SECRET: string;
// 网关ase密码解密密钥,保持跟后端密钥一致,必须要有否则登录会失败的
VITE_GLOB_GATEWAY_ASE_ENCODE_SECRET: string;
// 文件在线预览网址 // 文件在线预览网址
VITE_GLOB_FILE_PREVIEW_URL?: string; VITE_GLOB_FILE_PREVIEW_URL?: string;
// 开启微前端 // 开启微前端

Loading…
Cancel
Save