网站建设策划方案广西网站建设

铜鼓县赣丰汽运有限公司 2026/09/09 18:35:24

一、退出要实现的操作

(1)清理掉当前用户缓存数据

(2)清理掉权限相关配置

(3)返回到登录页

二、主动退出

主动退出指的是用户点击登录按钮之后退出

就是绑定点击退出事件,然后这个退出函数一般写在store中的user中的actions中,和登录的一样

import { removeAllItem } from '@/utils/storage' // 这个removeAllItem主要就是将window.localStorage.clear()清空 export default { state:(), mutations:(), actions:{ logout() { this.commit('user/setToken', '') this.commit('user/setUserInfo', {}) removeAllItem() router.push('/login') } } }

三、被动退出(token失效与单用户登录)

(1)主动处理——解决token失效,然后退出

在utils/auth.js中写入如下代码(处理token缓存时间)

import { TIME_STAMP, TOKEN_TIMEOUT_VALUE } from '@/constant' import { setItem, getItem } from '@/utils/storage' /** * 获取时间戳 */ export function getTimeStamp() { return getItem(TIME_STAMP) } /** * 设置时间戳 */ export function setTimeStamp() { setItem(TIME_STAMP, Date.now()) } /** * 是否超时 */ export function isCheckTimeout() { // 当前时间戳 var currentTime = Date.now() // 缓存时间戳 var timeStamp = getTimeStamp() return currentTime - timeStamp > TOKEN_TIMEOUT_VALUE }

在constant/index.js中

export const TIME_STAMP = 'timeStamp' export const TOKEN_TIMEOUT_VALUE = 1000 * 60 * 30 // 缓存时间30分钟

用户登录后设置时间

import { setTimeStamp } from '@/utils/auth' export default { namespaced: true, state: () => ({}), mutations: {}, actions: { login(context, userInfo) { 。。。 return new Promise((resolve, reject) => { 。。。 .then((data) => { 。。。 setTimeStamp() // 登录成功后设置时间戳 resolve() }) .catch((err) => { reject(err) }) }) }, 。。。 } }

在请求拦截器中主动介入(到达设置的时间节点后自动退出)

service.interceptors.request.use((config) => { 。。。 if (store.getters.token) { if (isCheckTimeout()) { store.dispatch('user/logout') return Promise.reject(new Error('token 失效')) } 。。。 } return config })

(2)被动处理——token失效

在响应拦截器中

service.interceptors.response.use( (response) => { 。。。 }, (error) => { if ( error.response && error.response.data && error.response.data.code === 401 ) { store.dispatch('user/logout') } ElMessage.error(error.message) return Promise.reject(error) } )

一般单用户登录也是用被动处理的,这里我也是在学习中,然后所用到的账号还是在多设备中可以登录的,处理单用户登录办法后续再补。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网站建设规划书宜昌网站建设

第一章:C# 跨平台方法拦截概述在现代软件开发中,C# 不仅活跃于 Windows 平台,也通过 .NET Core 和 .NET 5+ 实现了真正的

2026/06/30 10:45:21

网站建设南京网站建设要多少钱

数字化浪潮席卷各行各业,网络攻击却日趋隐蔽化、产业化,小到个人信息泄露,大到政企系统瘫痪,安全威胁无处不在,因此网络安全需求量持续

2026/06/30 14:20:39

邢台网站建设上海营销型网站建设

医院急诊目录基于springboot + vue医院急诊系统一、前言二、系统功能演示三、技术选型四、其他项目参考五、代码参考六、测试参考七、最新计算机毕设选题推荐八、源码获取:基

2026/06/30 11:45:57

广州市网站建设绍兴网站建设

Google DeepMind推出的EmbeddingGemma-300M模型,以其300M参数规模实现了性能与效率的平衡,成为当前轻量级嵌入模型领域的重要突破。该模型基于

2026/06/30 14:20:10

宁波网站建设洛阳网站建设

大连艾森诺铸件浇道击断器,铸造降本增效核心装备在铸造生产中,浇道处理长期受困于效率低、损耗大、成本高的痛点。传统人工锤砸、砂轮机切割等方式,不仅耗时费力、工人

2026/06/30 14:20:09

网站建设心得扬州网站建设

JAVA通过高并发架构、物联网集成与智能化算法,为24小时无人自助扫码洗车系统提供了稳定、高效、可扩展的技术底座,推动洗车行业向智能化、无人化转型,具体实现路

2026/06/30 13:27:36

南京网站建设网站建设技术

Postman便携版终极使用指南:免安装API开发神器【免费下载链接】postman-portable🚀 Postman portable for Windows项目地址

2026/06/30 12:03:59

婚纱摄影网站建设wap网站建设

随着人工智能的不断发展,越来越多的公司推出了他们的AI模型,用来提高工作效率,解决实际问题。最近,GPT-5.2打工人版和Gemini 3 Pr

2026/06/30 13:20:05

网站建设设计义乌网站建设

从零开始搭建Arduino下载环境:新手也能一次成功的实战指南你是不是也经历过这样的时刻?满怀期待地打开电脑,插上新买的Arduino板子,准备

2026/06/30 13:44:37

建设厅网站浙江网站建设

一张RS232原理图,藏着多少工业通信的密码?在车间角落的一台老旧PLC上,工程师正用笔记本连着一根灰扑扑的串口线,屏幕上跳出一行行字符

2026/06/30 11:57:58