当前位置: 首页 > wzjs >正文

地方门户网站推广方案网络营销是什么样的

地方门户网站推广方案,网络营销是什么样的,wordpress字體調整控制,网站建设丶金手指下拉11qiankun 微前端项目中的 Token 鉴权方案 在 qiankun 微前端架构中实现 Token 鉴权需要综合考虑主应用与子应用之间的协作。以下是几种常见的实现方案: 1. 主应用统一管理 Token(推荐方案) 实现方式 主应用存储和管理 Token: …

qiankun 微前端项目中的 Token 鉴权方案

在 qiankun 微前端架构中实现 Token 鉴权需要综合考虑主应用与子应用之间的协作。以下是几种常见的实现方案:

1. 主应用统一管理 Token(推荐方案)

实现方式

主应用存储和管理 Token

// 主应用 auth.js
let token = localStorage.getItem('token');export const getToken = () => token;
export const setToken = (newToken) => {token = newToken;localStorage.setItem('token', newToken);// 通知所有子应用token更新if (window.__POWERED_BY_QIANKUN__) {window.dispatchEvent(new CustomEvent('token-change', { detail: newToken }));}
};

通过 props 传递给子应用

// 主应用注册子应用
registerMicroApps([{name: 'sub-app',entry: '//localhost:7101',container: '#subapp-container',activeRule: '/sub-app',props: {getToken: () => getToken(),setToken: (newToken) => setToken(newToken)}}
]);

子应用使用 Token

// 子应用入口文件
export async function mount(props) {const token = props.getToken();// 初始化axios拦截器setupAxiosInterceptor(props.getToken);
}

2. 全局状态共享 Token

使用 qiankun 的 initGlobalState

主应用初始化

// 主应用
import { initGlobalState } from 'qiankun';const state = {token: localStorage.getItem('token') || ''
};const actions = initGlobalState(state);actions.onGlobalStateChange((state, prev) => {if (state.token !== prev.token) {localStorage.setItem('token', state.token);}
});export const setGlobalToken = (token) => {actions.setGlobalState({ ...actions.getGlobalState(), token });
};

子应用使用

export async function mount(props) {// 获取初始tokenconst { token } = props.getGlobalState();// 监听token变化props.onGlobalStateChange((state) => {if (state.token) {// 更新本地axios配置axios.defaults.headers.common['Authorization'] = `Bearer ${state.token}`;}}, true);// 更新tokenconst login = async () => {const newToken = await fetchToken();props.setGlobalState({ token: newToken });};
}

3. 基于 Cookie 的共享鉴权

实现方式

主应用登录后设置 Cookie

// 主应用登录逻辑
const login = async () => {const { token } = await loginApi();document.cookie = `token=${token}; path=/; domain=.yourdomain.com; max-age=86400`;
};

子应用从 Cookie 读取

// 子应用axios拦截器
import Cookies from 'js-cookie';axios.interceptors.request.use(config => {const token = Cookies.get('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});

4. 基于路由守卫的鉴权控制

主应用统一控制

// 主应用路由配置
router.beforeEach(async (to, from, next) => {if (!store.getters.token && to.meta.requiresAuth) {try {const token = await refreshToken();setToken(token);next();} catch (error) {next('/login');}} else {next();}
});

子应用独立鉴权

// 子应用独立运行时
if (!window.__POWERED_BY_QIANKUN__) {router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !getToken()) {next('/login');} else {next();}});
}

5. 请求拦截器统一处理

主应用封装请求方法

// 主应用api.js
export const request = async (config) => {const token = getToken();if (token) {config.headers = {...config.headers,Authorization: `Bearer ${token}`};}return axios(config);
};

子应用使用封装方法

// 子应用通过props使用主应用的request
export async function mount(props) {const { request } = props;const fetchData = async () => {const data = await request({ url: '/api/data' });// ...};
}

6. Token 刷新机制

主应用实现刷新逻辑

// 主应用token刷新
let isRefreshing = false;
let refreshSubscribers = [];const refreshToken = async () => {if (isRefreshing) {return new Promise(resolve => {refreshSubscribers.push(resolve);});}isRefreshing = true;try {const newToken = await refreshTokenApi();setToken(newToken);refreshSubscribers.forEach(cb => cb(newToken));refreshSubscribers = [];return newToken;} catch (error) {logout();throw error;} finally {isRefreshing = false;}
};

子应用处理401错误

// 子应用axios拦截器
axios.interceptors.response.use(response => response,async error => {if (error.response.status === 401 && !error.config._retry) {error.config._retry = true;try {const newToken = await props.refreshToken();error.config.headers.Authorization = `Bearer ${newToken}`;return axios(error.config);} catch (refreshError) {props.logout();return Promise.reject(refreshError);}}return Promise.reject(error);}
);

最佳实践建议

  1. 统一管理原则:主应用作为鉴权中心,子应用通过接口获取token
  2. 安全存储:优先使用HttpOnly Cookie存储敏感token
  3. 通信加密:敏感操作应使用加密通道
  4. 降级方案:考虑子应用独立运行时的鉴权逻辑
  5. 类型安全(TypeScript示例):
// 主应用类型定义
interface MainAppProps {getToken: () => string | null;setToken: (token: string) => void;refreshToken: () => Promise<string>;logout: () => void;
}// 子应用mount函数
export async function mount(props: MainAppProps) {const token = props.getToken();// ...
}

不同场景下的选择

场景推荐方案原因
同域子应用Cookie共享 + 主应用状态管理简单安全,天然共享
跨域子应用主应用props传递避免跨域问题
需要SSR的子应用Cookie共享服务端渲染需要Cookie
高安全要求系统主应用代理所有API请求避免token暴露给子应用
多技术栈复杂系统全局事件总线 + 状态共享解耦不同技术栈

无论采用哪种方案,都应确保在子应用销毁时清理token相关监听器,避免内存泄漏。


文章转载自:

http://wPh5Jnc8.mwqbp.cn
http://lCtPS1YH.mwqbp.cn
http://KvX5uPDK.mwqbp.cn
http://GW2biqV5.mwqbp.cn
http://mVlx1DYW.mwqbp.cn
http://cF2LvRLd.mwqbp.cn
http://YRdUGAgC.mwqbp.cn
http://8QaFlONU.mwqbp.cn
http://iLGSzH1c.mwqbp.cn
http://HfWuu4qJ.mwqbp.cn
http://JnaBvBs0.mwqbp.cn
http://1zQdrmEo.mwqbp.cn
http://vTGLwOwG.mwqbp.cn
http://nNIx1kLg.mwqbp.cn
http://JGBr0TKm.mwqbp.cn
http://yHDsuAiK.mwqbp.cn
http://lymR2bQT.mwqbp.cn
http://f49p7LwI.mwqbp.cn
http://04kcq8uX.mwqbp.cn
http://UWey8nxa.mwqbp.cn
http://kq09Ywjh.mwqbp.cn
http://ja6TpGGN.mwqbp.cn
http://GxoiARth.mwqbp.cn
http://kDcbETNe.mwqbp.cn
http://G8Hs3UpS.mwqbp.cn
http://O6mLQDvx.mwqbp.cn
http://pMP0bNkQ.mwqbp.cn
http://PUAYtGLC.mwqbp.cn
http://NECPfhFB.mwqbp.cn
http://HIHFdxrj.mwqbp.cn
http://www.dtcms.com/wzjs/624930.html

相关文章:

  • 网站建设需求参考文档不错的免费网站建设
  • 圣弘建设股份有限公司网站宁波房产信息网官方网站
  • 吴桥网站如何在网上推广农产品
  • 建设一个会员积分网站深圳网站设计公司在什么地方
  • 长春seo网站排名房产app开发公司
  • 网站当前位置怎么做h5制作网页
  • 网上引流推广有哪些软件seo网站推广软件
  • 三折页设计那个网站做的好泰安手机网站
  • 商城站地址小程序模板免费制作
  • 石家庄建设工程信息网站网页制作素材图片美食
  • 智能网站搭建wordpress打开刷新2次
  • 网站怎么没有排名公众号微信平台
  • 自己可以做百度网站吗临沂网站设计公司
  • 用ip地址做网站网站推广策划书的共同特点有哪些
  • 网络购物商城网站建设有哪些网站可以做全屏代码
  • 06627网页制作和网站建设试卷网络科技公司名字大全集
  • 为什么做这个网站反馈问题小狗做爰网站
  • 简述网站开发主要步骤河北网络推广系统
  • 宁波网站公司手机如何制作表格
  • 网站建设的主要产品企业网站群建设
  • 网站的分析与设计做网络销售都做什么网站
  • 佛山移动网站建设费用linux 国外网站
  • 免费的建设网站软件wordpress 亚马逊评论
  • 证券公司网站建设方案网站开发毕业设计代做
  • 墨刀网站开发原型图教程网站解除域名绑定
  • 我的世界做壁纸的网站定制网站型网站开发
  • 网站建设 南昌招标wordpress数据库中文
  • 男人与女人做视频网站jsp网站开发技巧
  • 做冷冻食品的网站学网站开发好不好
  • 蒲城县住房和城乡建设局网站网站创意策划方案