ruoyi-app前端在缓存中添加nick_name和user_id属性值

news2024/9/19 10:44:38

在这里插入图片描述

需求

ruoyi-app原生自带只有avatar、name、roles、permissions;在显示中,我们大多数需要nick_name、user_id;当然获取方式也可以通过name去调用接口查询,但我想偷个懒。

代码

代码已经调好的,复制即用;至于修改点,细心一点应该能自己发现

1、修改 store/modules/user.js 文件

import config from '@/config'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'

const baseUrl = config.baseUrl

const user = {
  state: {
    token: getToken(),
    name: storage.get(constant.name),
    userId: storage.get(constant.userId),
    nickName: storage.get(constant.nickName),
    avatar: storage.get(constant.avatar),
    roles: storage.get(constant.roles),
    permissions: storage.get(constant.permissions)
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_NAME: (state, name) => {
      state.name = name
      storage.set(constant.name, name)
    },
	SET_USER_ID: (state, userId) => {
	  state.userId = userId
	  storage.set(constant.userId, userId)
	},
	SET_NICK_NAME: (state, nickName) => {
	  state.nickName = nickName
	  storage.set(constant.nickName, nickName)
	},
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
      storage.set(constant.avatar, avatar)
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
      storage.set(constant.roles, roles)
    },
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions
      storage.set(constant.permissions, permissions)
    }
  },

  actions: {
    // 登录
    Login({ commit }, userInfo) {
      const username = userInfo.username.trim()
      const password = userInfo.password
      const code = userInfo.code
      const uuid = userInfo.uuid
      return new Promise((resolve, reject) => {
        login(username, password, code, uuid).then(res => {
          setToken(res.token)
          commit('SET_TOKEN', res.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 获取用户信息
    GetInfo({ commit, state }) {
      return new Promise((resolve, reject) => {
        getInfo().then(res => {
          const user = res.user
          const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar
          const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
          const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId
		  const nickName = (user == null || user.nickName == "" || user.nickName == null) ? "" : user.nickName
          if (res.roles && res.roles.length > 0) {
            commit('SET_ROLES', res.roles)
            commit('SET_PERMISSIONS', res.permissions)
          } else {
            commit('SET_ROLES', ['ROLE_DEFAULT'])
          }
          commit('SET_NAME', username)
          commit('SET_USER_ID', userId)
          commit('SET_NICK_NAME', nickName)
          commit('SET_AVATAR', avatar)
          resolve(res)
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 退出系统
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token).then(() => {
          commit('SET_TOKEN', '')
          commit('SET_ROLES', [])
          commit('SET_PERMISSIONS', [])
          removeToken()
          storage.clean()
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    }
  }
}

export default user

2、修改 store/getter.js 文件

const getters = {
  token: state => state.user.token,
  avatar: state => state.user.avatar,
  name: state => state.user.name,
  userId: state => state.user.userId,
  nickName: state => state.user.nickName,
  roles: state => state.user.roles,
  permissions: state => state.user.permissions
}
export default getters

3、修改 utils/storage.js 文件

import constant from './constant'

// 存储变量名
let storageKey = 'storage_data'

// 存储节点变量名
let storageNodeKeys = [constant.avatar, constant.name,constant.userId,constant.nickName, constant.roles, constant.permissions]

const storage = {
  set: function(key, value) {
    if (storageNodeKeys.indexOf(key) != -1) {
      let tmp = uni.getStorageSync(storageKey)
      tmp = tmp ? tmp : {}
      tmp[key] = value
      uni.setStorageSync(storageKey, tmp)
    }
  },
  get: function(key) {
    let storageData = uni.getStorageSync(storageKey) || {}
    return storageData[key] || ""
  },
  remove: function(key) {
    let storageData = uni.getStorageSync(storageKey) || {}
    delete storageData[key]
    uni.setStorageSync(storageKey, storageData)
  },
  clean: function() {
    uni.removeStorageSync(storageKey)
  }
}

export default storage

4、修改 utils/constant.js 文件

const constant = {
   avatar: 'vuex_avatar',
   name: 'vuex_name',
   userId: 'vuex_user_id',
   nickName: 'vuex_nick_name',
   roles: 'vuex_roles',
   permissions: 'vuex_permissions'
 }

 export default constant

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国工商银行笔试2025届考什么?工行笔试备考|附真题库面试攻略

嘿,各位小伙伴们!我是职小豚,今天咱们就来好好聊聊中国工商银行 2025 届秋招那些事儿。 一、中国工商银行公司介绍 中国工商银行,那可是金融界的巨擘!1984 年 1 月 1 日,它横空出世,开启了辉煌…

浅谈【数据结构】树与二叉树之平衡二叉树

目录 1、平衡二叉树 2、平衡操作 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错,说的就是你,不用再怀疑!!! 希望我的文章内容能对你有帮助,一起努力吧!!&#xff…

【与C++的邂逅】--- C/C++内存管理

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 C中我们总是提到管理资源,资源可以从内存中申请,前提是我们得知道C对内存管理的布局,本节我们就来学习这块…

民宿管理平台系统

你好,我是计算机专业的毕业生,专注于民宿管理平台系统的研究与开发。如果你对本系统感兴趣或有任何疑问,欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 SpringBoot框架 工具 ECLIPSE开发环境、Tomcat服务器 系统展示 首页 用户…

联发科双频Wi-Fi 6芯片MT7976CN全景图

这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) 天玑助力联发科力压高通~探秘MTK 5G旗舰智能手机SoC芯片——MT6989(天玑9300) 联发科双频Wi-Fi 6芯片MT7976CN全景图 TPLink AX3000路由器 TPLin

论文解读Multi-Prompt Alignment for Multi-Source Unsupervised Domain Adaptation

Multi-Prompt Alignment for Multi-Source Unsupervised Domain Adaptation NeurlIPS 2023 摘要 大多数现有的无监督域适应( UDA )方法依赖于共享网络来提取领域不变特征。无论如何,当面对多个源域时,优化这样的网络涉及更新整个网络的参数&#xff0…

推动RISC-V CPU性能快速提升并向上打开更多的高价值市场

作者:Imagination Technologies 8月21-23日,2024年RISC-V中国峰会在杭州黄龙饭店举行。作为已推出多款Imagination Catapult系列RISC-V CPU半导体知识产权(IP)的提供商,以及全球领先的GPU和AI加速器IP厂商&#xff0c…

【经验分享】CANOPEN协议驱动移植(基于CANfestival源码架构)

【经验分享】CANOPEN协议驱动移植(基于CANfestival源码架构) 前言一、CANOPEN整体实现原理二、CANOPEN驱动收发三、Timer定时器四、Object Dictionary对象字典五、CANOPEN应用层接口六、CANOPEN 驱动移植经验总结 前言 本次CANOPEN移植基于CANfestival开源代码&…

开关电源中“黑箱”的考虑

在初设计阶段,首先要考虑开关电源的一些主要参数,这有助于设计者确 定自己所选的拓扑是否正确,也便于提前预定实验板所需的元器件。同时可以知 道接下来的设计所需的一些非常重 要的参数。关于如何对“黑箱”进 行估计,设计者只要…

MIPI联盟D-PHYv1.2规范阅读笔记

本文阅读自eetop.cn_mipi_D-PHY_specification_v1-2.pdf MIPI简介 MIPI 联盟成立至今制定了多种用于不同终端设备的接口标准,其中包括 用于摄像头的 CSI-2。 用于显示器的 DSI。 用于射频的 DigRF 。 用于麦克风的SLIMbus等接口协议。 MIPI CSI-2 协议简介 两…

书生大模型实战营(第三期闯关大挑战)- 进阶岛 第五关 茴香豆:企业级知识库问答工具

茴香豆本地标准版搭建 茴香豆介绍 茴香豆 是由书生浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成…

8周流水6700美元Dropshipping运营全流程曝光丨出海笔记

(之前删掉补发系列) 之前分享了一个案例《净赚4000多美元!个人卖家Dropshipping卖30天太阳镜,究竟如何做到的》,不少小伙伴觉得实操性很强,纷纷反馈意犹未尽,所以船长继续去找之前的Dropshippin…

房产系统技术功能解析

房产系统的功能设计旨在提高房地产行业的运作效率、优化资源分配,并为用户提供更便捷高效的服务体验。以下是房产系统关键技术功能的详细解析: 一、房源管理 房源信息录入与编辑:支持全面的房源信息录入,包括房屋位置、面积、户型…

C++第四十一弹---C++11新特性深度解析:让你的代码更现代、更高效(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C11简介 2. 统一的列表初始化 2.1 {}初始化 2.2 std::initializer_list 3. 声明 3.1 auto 3.2 decltype 3.3 nu…

arcgis依据字段分组

脚本代码: UniqueDict {} def isDuplicateIndex(inValue): UniqueDict.setdefault(inValue,0) UniqueDict[inValue] 1 return UniqueDict[inValue] 输出值 isDuplicateIndex( !地块编号! )

临床试验中缺失数据的问题讨论

一、数据缺失的原因: (1)AE或疗效退出; (2)结局变量不适用(无法获得结局变量); (3)失访; (4)数据采集失误&am…

云安全已经很好,但如何让它更好呢

尽管云计算很安全,但并不能完全避免数据泄露。随着云计算逐渐成为IT的重要部分,现在企业必须更认真地考虑如何加强云服务提供商默认安全基础设施的安全性。 传统云服务提供商都在努力为其客户提供强大的安全措施,他们通常会提供服务器端加密…

佰朔资本:市场转机正在逐步孕育 关注银行、电力等板块

商场起色正在逐渐孕育。中报宣布期即将以前,商场将完结盈利预期下修,一同美联储9月降息信号激烈,若协作国内方针加码发力信号,商场有望翻开向上空间。短期除高胜率的稳定盈利资产和中报超预期且景气继续方向,亦可注重中…

ES(索引数据库)导入MySQL全量(批量导入)和增量数据Canal增量数据同步利器

索引库数据管理 秒杀商品数量庞大,我们要想实现快速检索,不建议直接使用关系型数据库查找。不建议使用Redis缓存所有数据,因为秒杀商品量大,会影响Redis的性能,并且Redis的条件检索能力偏弱。我们可以使用Elasticsear…

Linux:NAT等相关问题

目录 1:NAT背景 2:NAT IP转换过程 3:NATP 4:正向代理 5:反向代理 6:NAT和代理服务器 应用场景 实现方法 1:NAT背景 IPv4地址耗尽:随着互联网的迅速发展,连接到…