diff --git a/packages/ui/certd-client/src/api/service.ts b/packages/ui/certd-client/src/api/service.ts index fd108aa0..3fe0d4ca 100644 --- a/packages/ui/certd-client/src/api/service.ts +++ b/packages/ui/certd-client/src/api/service.ts @@ -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 => { diff --git a/packages/ui/certd-client/src/i18n/locale/zh_CN.ts b/packages/ui/certd-client/src/i18n/locale/zh_CN.ts index e6cc4b70..bf298990 100644 --- a/packages/ui/certd-client/src/i18n/locale/zh_CN.ts +++ b/packages/ui/certd-client/src/i18n/locale/zh_CN.ts @@ -3,12 +3,12 @@ export default { crud: { i18n: { name: "姓名", city: "城市", status: "状态" } }, login: { logoutTip: "确认", - logoutMessage: "确定要注销登录吗?" - } + logoutMessage: "确定要注销登录吗?", + }, }, fs: { rowHandle: { - title: "操作列" - } - } + title: "操作列", + }, + }, }; diff --git a/packages/ui/certd-client/src/layout/components/user-info/index.vue b/packages/ui/certd-client/src/layout/components/user-info/index.vue index b03b369d..9f2c2e7c 100644 --- a/packages/ui/certd-client/src/layout/components/user-info/index.vue +++ b/packages/ui/certd-client/src/layout/components/user-info/index.vue @@ -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); - } + }, }); } diff --git a/packages/ui/certd-client/src/layout/layout-basic.vue b/packages/ui/certd-client/src/layout/layout-basic.vue index 11ab3269..04736a56 100644 --- a/packages/ui/certd-client/src/layout/layout-basic.vue +++ b/packages/ui/certd-client/src/layout/layout-basic.vue @@ -30,7 +30,7 @@ const avatar = computed(() => { }); async function handleLogout() { - userStore.logout(true); + await userStore.logout(true); } const settingStore = useSettingStore(); diff --git a/packages/ui/certd-client/src/store/user/api.user.ts b/packages/ui/certd-client/src/store/user/api.user.ts index 12c92517..9e81b51b 100644 --- a/packages/ui/certd-client/src/store/user/api.user.ts +++ b/packages/ui/certd-client/src/store/user/api.user.ts @@ -41,6 +41,12 @@ export async function register(user: RegisterReq): Promise { data: user, }); } +export async function logout() { + return await request({ + url: "/logout", + method: "post", + }); +} export async function login(data: LoginReq): Promise { //如果开启了登录与权限模块,则真实登录 diff --git a/packages/ui/certd-client/src/store/user/index.ts b/packages/ui/certd-client/src/store/user/index.ts index e6f354ed..7f12878b 100644 --- a/packages/ui/certd-client/src/store/user/index.ts +++ b/packages/ui/certd-client/src/store/user/index.ts @@ -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"); }, diff --git a/packages/ui/certd-server/src/controller/user/login/login-controller.ts b/packages/ui/certd-server/src/controller/user/login/login-controller.ts index 90bbae8d..2877c257 100644 --- a/packages/ui/certd-server/src/controller/user/login/login-controller.ts +++ b/packages/ui/certd-server/src/controller/user/login/login-controller.ts @@ -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(); + } } diff --git a/packages/ui/certd-server/src/middleware/authority.ts b/packages/ui/certd-server/src/middleware/authority.ts index a5252882..e5a8e56c 100644 --- a/packages/ui/certd-server/src/middleware/authority.ts +++ b/packages/ui/certd-server/src/middleware/authority.ts @@ -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 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ceafc151..e5dfa03a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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