Electron axios token失效刷新token

本文介绍了如何在Electron应用中使用electron-store模块存储和管理token,特别是在axios请求中拦截器的作用以及登录后如何更新localStorage。着重于渲染进程中的localStorage使用和与axios的集成。
摘要由CSDN通过智能技术生成

在Electron中,localStorage仅在浏览器进程(渲染进程)中起作用, 这里axios请求需要使用electron-store来保存token。

安装electron-store

npm i electron-store -d

store.js

const Store = require("electron-store")
const app = require("electron").app
let option = {
    //文件名称,默认 config
    name: "config",
    //文件后缀,默认json
    fileExtension: "json",
    //文件位置,尽量不要动,默认情况下,它将通过遵循系统约定来选择最佳位置。C:\Users\xxx\AppData\Roaming\test\config.json
    cwd: app.getPath('userData'),
    clearInvalidConfig: false, // 发生 SyntaxError  则清空配置,
}

const store = new Store(option);


export { store }

base.js

import axios from "axios";
import { store } from '@/utils/store';

const instance = axios.create({
    baseURL: baseURL
});

instance.interceptors.request.use(config => {
    if(store.get('token')){
        config.headers['token'] = store.get('token');
    }
    return config;
})
instance.interceptors.response.use(async (result) => {
    if (result.status && result.status == 200) {
        if(result.data.code==0){
            return {
                status: result.status,
                data: result.data
            }
        }
        else if(result.data.code == "40302"){
            //token 失效
            let userInfo = store.get('userInfo');
            const res = await getLoginUser({
              loginName: userInfo.userName,
              password: userInfo.password,
            });
            if (res.data.data && res.data.data.token) {
                store.set('token', res.data.data.token);
                store.set('userInfo', res.data.data);
                // ... 更新其他数据
        
            }
            else {
                return {
                    status: res.status,
                    data: res.data
                }
            }
        }
        else { //其他错误提示
			return{
				statusCode: 0,
				errMsg: "【request】" +  (result.data.info || result.data.msg),
				data: result.data
			};
	    }
    }else {
        return {
            status: result.status,
            errMsg: "【request】数据验证不通过",
			data: result.data
        }
    }
    
})

export { instance }

login.vue

if (res.data.data && res.data.data.token) {
        //登录成功
        window.ipcApis.setStore({
          key: 'token',
          val: res.data.data.token
        });
        window.ipcApis.setStore({
          key: 'userInfo',
          val: res.data.data
        });
        //.....
      } else {
        Message.error('登录失败!' + res.data.msg);
  }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值