fix: 修复下载证书时提示token已过期的问题

pull/409/head
xiaojunnuo 2025-04-19 14:25:56 +08:00
parent 02b6351e13
commit 0e07ae6ce8
9 changed files with 103 additions and 79 deletions

View File

@ -49,33 +49,32 @@ function createService() {
}
// 这个状态码是和后端约定的
const { code } = dataAxios;
// 根据 code 进行判断
if (code === undefined) {
if (dataAxios?.code === undefined) {
// 如果没有 code 代表这不是项目后端开发的接口
errorCreate(`非标准返回:${dataAxios} ${response.config.url}`);
return dataAxios;
} else {
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
}
const { code } = dataAxios;
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
// @ts-ignore
return dataAxios?.data;
default:
// 不是正确的 code
const errorMessage = dataAxios.msg || dataAxios.message || "未知错误";
// @ts-ignore
if (response?.config?.onError) {
const err = new CodeError(errorMessage, dataAxios.code, dataAxios.data);
// @ts-ignore
return dataAxios.data;
default:
// 不是正确的 code
const errorMessage = dataAxios.msg || dataAxios.message || "未知错误";
// @ts-ignore
if (response?.config?.onError) {
const err = new CodeError(errorMessage, dataAxios.code, dataAxios.data);
response.config.onError(err);
return;
}
//@ts-ignore
const showErrorNotify = response?.config?.showErrorNotify;
errorCreate(`${errorMessage}: ${response.config.url}`, showErrorNotify, dataAxios);
return dataAxios;
}
response.config.onError(err);
return;
}
//@ts-ignore
const showErrorNotify = response?.config?.showErrorNotify;
errorCreate(`${errorMessage}: ${response.config.url}`, showErrorNotify, dataAxios);
return dataAxios;
}
},
error => {

View File

@ -3,12 +3,12 @@ export default {
crud: { i18n: { name: "姓名", city: "城市", status: "状态" } },
login: {
logoutTip: "确认",
logoutMessage: "确定要注销登录吗?"
}
logoutMessage: "确定要注销登录吗?",
},
},
fs: {
rowHandle: {
title: "操作列"
}
}
title: "操作列",
},
},
};

View File

@ -20,7 +20,7 @@ import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
defineOptions({
name: "FsUserInfo"
name: "FsUserInfo",
});
const userStore = useUserStore();
const { t } = useI18n();
@ -38,7 +38,7 @@ function doLogout() {
content: t("app.login.logoutMessage"),
onOk: async () => {
await userStore.logout(true);
}
},
});
}
</script>

View File

@ -30,7 +30,7 @@ const avatar = computed(() => {
});
async function handleLogout() {
userStore.logout(true);
await userStore.logout(true);
}
const settingStore = useSettingStore();

View File

@ -41,6 +41,12 @@ export async function register(user: RegisterReq): Promise<UserInfoRes> {
data: user,
});
}
export async function logout() {
return await request({
url: "/logout",
method: "post",
});
}
export async function login(data: LoginReq): Promise<LoginRes> {
//如果开启了登录与权限模块,则真实登录

View File

@ -108,9 +108,10 @@ export const useUserStore = defineStore({
/**
* @description: logout
*/
logout(goLogin = true) {
async logout(goLogin = true) {
this.resetState();
resetAllStores();
await UserApi.logout(); //主要是清空cookie
goLogin && router.push("/login");
mitter.emit("app.logout");
},

View File

@ -28,7 +28,7 @@ export class LoginController extends BaseController {
}
private writeTokenCookie(token: { expire: any; token: any }) {
this.ctx.cookies.set("token", token.token, {
this.ctx.cookies.set("certd_token", token.token, {
maxAge: 1000 * token.expire
});
}
@ -72,5 +72,10 @@ export class LoginController extends BaseController {
}
@Post('/logout', { summary: Constants.per.authOnly })
public logout() {}
public logout() {
this.ctx.cookies.set("certd_token", "", {
maxAge: 0
});
return this.ok();
}
}

View File

@ -56,7 +56,20 @@ export class AuthorityMiddleware implements IWebMiddleware {
token = token.replace('Bearer ', '').trim();
if (!token) {
//尝试从cookie中获取token
token = ctx.cookies.get('token') || '';
const cookie = ctx.headers.cookie;
if (cookie) {
const items = cookie.split(';');
for (const item of items) {
if (!item || !item.trim()) {
continue;
}
const [key, value] = item.split('=');
if (key.trim() === 'certd_token') {
token = value.trim();
break;
}
}
}
}
if (!token) {
//尝试从query中获取token

View File

@ -46,7 +46,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@ -204,10 +204,10 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../basic
'@certd/plus-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../pro/plus-core
dayjs:
specifier: ^1.11.7
@ -412,7 +412,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@ -452,16 +452,16 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../pro/plus-core
'@midwayjs/cache':
specifier: ~3.14.0
@ -604,16 +604,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../plugin-lib
'@google-cloud/publicca':
specifier: ^1.3.0
@ -680,10 +680,10 @@ importers:
specifier: ^1.7.10
version: 1.8.0
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@kubernetes/client-node':
specifier: 0.21.0
@ -771,19 +771,19 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@certd/plugin-plus':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../plugin-plus
'@certd/plus-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../plus-core
'@midwayjs/core':
specifier: ~3.20.3
@ -868,22 +868,22 @@ importers:
specifier: ^1.0.2
version: 1.0.2
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/lib-k8s':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-k8s
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../plus-core
ali-oss:
specifier: ^6.21.0
@ -980,7 +980,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@ -1270,10 +1270,10 @@ importers:
version: 0.1.3(zod@3.24.2)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@ -1453,43 +1453,43 @@ importers:
specifier: ^3.705.0
version: 3.758.0(aws-crt@1.25.3)
'@certd/acme-client':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../pro/commercial-core
'@certd/jdcloud':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../pro/plugin-plus
'@certd/plus-core':
specifier: ^1.33.4
specifier: ^1.33.5
version: link:../../pro/plus-core
'@corsinvest/cv4pve-api-javascript':
specifier: ^8.3.0
@ -20673,13 +20673,13 @@ snapshots:
resolve: 1.22.10
semver: 6.3.1
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8):
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8):
dependencies:
eslint: 7.32.0
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
optionalDependencies:
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-config-prettier: 8.10.0(eslint@8.57.0)
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8):
dependencies:
@ -23393,7 +23393,7 @@ snapshots:
eslint: 7.32.0
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-plugin-node: 11.1.0(eslint@7.32.0)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8)
execa: 5.1.1
inquirer: 7.3.3
json5: 2.2.3