Skip to content

Utils 工具包使用说明

登录重定向 (redirectToLogin)

该函数用于清理本地缓存并引导用户跳转至统一认证中心(Auth 系统)。

基础用法

typescript
import { redirectToLogin } from '@/utils/auth';

// 最简调用(自动使用当前 location.href 作为回跳地址)
redirectToLogin({
  channel: 'pink_ide',
  authBaseUrl: import.meta.env.VITE_AUTH_BASE_URL // 环境配置文件中的 Auth 域名
});

退出登录场景

跳转到 Auth 系统的指定退出路径:

typescript
redirectToLogin({
  channel: 'pink_ide',
  authBaseUrl: import.meta.env.VITE_AUTH_BASE_URL,
  authPath: '/logout', // 指定跳转路径
  redirect_uri: 'https://mysite.com/welcome' // 登录成功后自定义的回跳到页面
});

参数说明 (IRedirectToLoginParams)

参数说明类型必填默认值
channel当前平台的标识字符串,用于 Auth 系统识别来源string-
authBaseUrlAuth 系统的主域名地址 (如 https://auth.xx.com)string-
authPath具体的授权路径 (如 /login/logout)string""
redirect_uri登录成功后的回跳地址stringlocation.href
debug调试模式。开启后仅控制台打印跳转地址,不会执行实际跳转booleanfalse

Token 保存

提供对 localStorage 中 Token 的统一操作接口,默认使用 CacheKey.XSRFSTART 作为存储键名。

常用方法

方法名说明参数返回值
getCsrfToken获取本地存储的 Token-`string
setCsrfToken设置并持久化 Tokentoken: stringvoid
removeCsrfToken清除本地 Token-void

代码示例

typescript
import { getCsrfToken, setCsrfToken } from '@/utils/auth';

// 1. 在请求拦截器中获取 Token
const token = getCsrfToken();
if (token) {
  config.headers['X-CSRF-Token'] = token;
}

// 2. 登录成功后保存 Token
const loginSuccess = (res) => {
  setCsrfToken(res.data.token);
};

内部处理细节说明

  • 自动清理机制:在执行 redirectToLogin 跳转前,程序会自动调用 removeCsrfToken() 清除旧的 Token,确保环境干净。
  • 参数净化:函数会自动识别 redirect_uri 中的 URL 参数,并剔除由 Auth 系统携带回来的 code 字段(基于 AUTHKEYNAME 常量),防止在反复跳转中产生参数堆积。
  • 安全性:使用 new URL() 对象进行地址拼接,自动处理 URL 编码,避免手动拼接字符串导致的路径错误。

AUTHKEYNAME

跳转成功后附带在url中的code参数keyname,获取后进行code兑换,通过axios的response header进行set token就好

安装与引入

安装方式

通过 npm 或 yarn 安装:

bash
npm install @sud-web/utils
# 或者
yarn add @sud-web/utils

引入方式

在项目中按需引入所需模块:

ts
import { setCsrfToken, AUTHKEYNAME, redirectToLogin } from '@sud-web/utils'