流浪のwolf

卷帝

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

退出登录操作

复制代码
  async logout() {
      try {
        await this.$confirm("确定退出吗?");
      } catch (error) {
        return console.log(error);
      }
      // 要退出
      this.$store.dispatch("user/quitAction");
      // 跳转
      this.$router.push("/login");
    },
复制代码

1 删除 token 

2. 删除用户的资料

复制代码
import { getToken, setToken, removeToken } from "@/utils/auth";
import { loginApi, getInfoApi, getUserInfoApi } from "@/api/user";
import { resetRouter } from "@/router";
const state = {
  token: getToken(), // 读取cookie里面作为默认值
  userInfo: {}, //用户资料
};

const mutations = {
  // 设置token
  setToken(state, data) {
    state.token = data; // 存vuex
    setToken(data); // 存本地
  },
  // 移除token
  removeToken(state) {
    state.token = null;
    removeToken();
  },
  // 设置用户资料
  setUserInfo(state, data) {
    state.userInfo = data;
  },
  // 删除用户资料
  removeUserInfo(state) {
    state.userInfo = {};
  },
};

const actions = {
  // 登录操作
  async loginAction(context, data) {
    // 接收表单数据 data
    // 发生请求 loginApi,得到token
    let token = await loginApi(data);
    // 触发mutation,存储token
    context.commit("setToken", token);
  },
  // 获取用户资料的action
  async getUserProfileAction(context) {
    let res = await getInfoApi();
    let res2 = await getUserInfoApi(res.userId);
    context.commit("setUserInfo", { ...res, ...res2 });
    return res; // 返回结果
  },
  // 退出操作
  quitAction(context) {
    context.commit("removeToken");
    context.commit("removeUserInfo");
    // 1. 清除 vuex中 permission模块里面的routes为静态路由
    // A模块的action如何触发B模块的muations里面的方法呢?
    // context.commit(方法名,实参,{配置对象})
    context.commit("permission/setRoutes", [], { root: true });
    // 2. 重置路由实例对象
    resetRouter();
  },
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
复制代码

 

posted on   朱龙旭的网络  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示