Vue系列4 - Vue+store 保存用户登录信息和退出登录

VUE实现token登录验证 实现这个登录功能的过程真是一波三折,中途出现了bug,整了两三天才解决了问题,心力交瘁,简直一个头两个大,感觉自己的毅力和耐心又提升了一个层次ORZ 好在最终在同学的帮助下解决了bug,不过我又再次感受到了作为一个菜鸟的浅薄,大佬的问题屡次触及到我的知识盲区......现在详细地记录一下实现token登录验证的步骤,以防以后再犯错 1.封装store对token的操作方法 首先在src目录下... 阅读详情
阿里云采购季

1.store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import qs from 'qs'
import example from './module-example'
import _ from 'lodash';

Vue.use(Vuex)
Vue.prototype.$qs = qs
/*
 * If not building with SSR mode, you can
 * directly export the Store instantiation
 */
export default function (/* { ssrContext } */) {
  const Store = new Vuex.Store({
    state: {
      user: {},
      token: "",
      title: ''
    },
    modules: {
      example
    },
    getters: {
      user(state){
        if (!_.size(state.user)) {
          var user = {};
          var u = JSON.parse(window.localStorage.getItem("user"));
          if (u) {
            user = u;
          }
          localStorage.setItem("user", JSON.stringify(user));
          state.user = user; //this.$store.commit("setUser", user);
          return user;
        }
        return state.user
      },
      token(state){
        return state.token
      }

    },
    mutations: {
      setUser (state, user) {
        var _user = _.merge({}, state.user);
        if (!_.size(_user)) {
          _user = {};
        }
        _.each(user, function (value, key) {
          _user[key] = value;
        })
        sessionStorage.setItem("user", JSON.stringify(_user));
        state.user = _user;
      },
      setToken (state, token) {
          sessionStorage.setItem("token", token);
          state.token = token;
      },
      LOGOUT (state){
        sessionStorage.clear();
        state.user = {};
        state.token = null
      },

    }
  })

  return Store
}

设置 store 里面的user 和token 属性,并给添加getter和setf方法,为其赋值

为了方便退出直接加了一个Logout的方法直接清空 所有对象

2.在login.vue 里登录成功返回user和token后将user和token保存至store中,如下使用commit方法

 当将登录对象保存至store后,用this.store.getters.token()来获取token对象,

或者  token = window.sessionStorage.getItem('token') 获取

3.退出

再需要退出的页面写一个退出登录的方法,调用store里面的logout方法,直接清空store中存储对象,再跳转至登录页面

 

关注

如果有问题,请在下方评论

想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码


 

NT35310 LCD屏的初始化与图形显示实战:从画点到UI设计的完整指南 本文详细介绍了NT35310 LCD屏的初始化与图形显示实战,从硬件配置到UI设计全流程。内容包括8080总线连接、初始化序列、基础图形绘制算法、显示优化技巧以及UI框架实现,帮助开发者快速掌握TFT-LCD驱动开发技术,适用于工业控制和智能家居等嵌入式应用场景。 阅读详情

相关推荐

微软登录OAuth 2.0授权流程

OAuth 2.0是一个关于授权的开放网络标准,它允许第三方应用获取用户数据,是目前最流行的授权机制。微软身份平台支持OAuth 2.0授权码流程,使得客户端应用程序能够获得对受保护资源(如网络API)的授权访问。这一流程在保障用户数据安全的前提下,实现了应用的便捷登录与数据共享。当用户在一个支持OAuth 2.0的应用上,希望使用微软账号进行登录时,OAuth 2.0授权流程即被触发。

qq_36569837的博客 4082

vue 退出登陆时清空store中数据

想实现退出登陆时 清空store中的数据 方法一 缺点是会白屏一下 window.location.reload() 参考链接 方法二 logout () { this.isRouterAlive = false this.$nextTick(function () { this.isRouterAlive = true }) } 参考链接 ...

顽石⚡ 8564

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 326

vuex中 this.$store.dispatch() 与 this.$store.commit()方法的区别

在组件中使用actions,在组件中使用actions和在组建中使用mutations类似区别就是,mutations使用this.$store.commit('mutation方法名')提交mutation;dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值)commit:同步操作,写法:this.$store.commit('mutations方法名',值)

OneBaBa的专栏 3461

Unity中URP实现水体效果(泡沫)

在上篇文章中,我们实现了水体的深度。在这篇文章中,我们来使用上篇文章采样后的深度图来实现水中的泡沫效果。

楠溪泽岸的博客 3489

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

Vue退出登录时清空缓存

<template> <div id="main" class="app-main"> <router-view></router-view> </div> </template> <script> export default { data () {...

成长永远没有尽头 7153

R语言深度学习实战:基于YOLO的目标检测

目标检测是计算机视觉领域的一项任务,旨在识别图像或视频中的物体,并确定它们的位置。与图像分类不同,目标检测要求模型能够识别多个物体,并为每个物体提供边界框(bounding box)的位置信息。这种任务在众多应用中都具有重要价值,例如自动驾驶、安防监控、物体跟踪等。YOLO(You Only Look Once)是一种非常流行的目标检测算法,它在速度和准确性之间取得了良好的平衡。与传统的目标检测方法不同,YOLO将目标检测任务视为回归问题,直接从输入图像中预测目标的类别和位置信息。

YOLO 329

vue3 pinia 持久化存储

vue3 中使用pinia进行数据持久化

lemon_sugar的博客 1508

图解B+树的插入过程

B+ 树在现代数据库中很常见,如果我们了解它,在工作中可能对性能优化会有更好的帮助! 最近我一直在思考 B+ 树的高度是由什么决定的。知道我了解了 B+ 树的插入过程,才有一种恍然大悟的感觉! 网上的一些资料杂乱无章,不同的数据库可能还有对 B+ 树有不同的实现。但是万变不离其宗,B+ 树的定义,大致如下所示: 总结一下,B+ 树有下面 5 个重要的特点。 B+ 树包含 2 种类型的结点: 内部结点(也称索引结点)和叶子结点。 根结点本身即可以是内部结点,也可以是叶子结点。 根结点的关键字个数最

愿君出走半生,归来时仍是少年 2133

Agent Skills应用解析:构建可扩展、高效率AI探员

Agent Skills是一个简洁而强大的概念:它是一个包含组织化的指令、脚本和资源的文件夹,智能体可以动态地发现并加载这些内容,以在特定任务中表现更佳。可组合性(Composability):一个Agent Skill是一个独立的、封装良好的能力单元。开发者可以为不同的功能(例如PDF处理、网络浏览、数据分析)创建独立的技能,然后根据需要将它们组合起来,赋能不同的智能体。这意味着不再需要为每个用例构建碎片化、定制设计的智能体,而是可以通过组合现有技能来快速构建新的专业智能体。

形上得其象,形下合于数;阴阳自济,玄理自明。 1627

Vuex数据清空方法(用于用户登出等操作)

Vuex持久化传送门:Vuex数据持久化 由于项目中需要一个用户登出的功能,而数据放在Vuex中在登出没有刷新时数据并不会更新 所以找到了这样一个很不错的方法 将state以各种方式保存 注册时调用函数赋值 清空时再将保存的state赋值替换当前的state over 首先默认state时要用新的方法注册 把数据写在函数的返回值中(其他方法也可以只要能调用) const getDefaultState = () => { return { token: getToken(),

火腿肠的博客 1万+

杰理AC695N系列芯片 LED7数码管使用教程

杰理AC695N数码管使用摘要 本教程介绍了杰理AC695N芯片驱动LED7数码管的实现方法: 硬件配置:支持7/12/13脚三种数码管类型,详细说明了7脚数码管的标准段码定义和GPIO接线方式。 软件设置: 通过修改配置文件启用LED7功能 配置GPIO引脚映射(PORTC/PORTA组) 选择与硬件匹配的真值表 层次架构:包含硬件层、驱动层、UI层和应用层的完整设计,支持数字、字符和图标显示功能。 实现要点包括正确配置引脚类型、选择真值表,并通过UI风格设置为LED7模式。

qq_42014563的博客 1344

vue项目退出登录清除 store 数据

在退出登录的loginOut 方法里面: 利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法 然后使用的时候调用: this.reload() 方法

IT博客技术分享 7745

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

uniapp+vuex储存登录状态和用户数据

首先我们在根目录下新建一个 store 文件夹,然后在里面新建一个index.js文件 里面的内容是,这里我就不讲创建过程了,可以去查下如何使用vuex,我这里写了两个方法,一个登陆保存,一个退出登录清除数据 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { hasLogin:false, //用户是否登录 userI..

little_shallot的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在vue中使用vuex和sessionStorage保存用户名

安装 vuex npm install vuex --save vuex安装完成之后,构建如下目录: main.js文件下注册: //实例化 store import store from './vuex/store.js' new Vue({ el: '#app', store, //实例化 store router, components: { App }, ...

weixin_41997724的博客 7761

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vue保存登录状态,监视是否登录,没有登录返回到登录界面

第1步:login.vue 登录界面 //登录方法 submit(){ //登陆成功后调用第2步store里面的login方法,并将username传递过去,并跳转到home主页面 store.commit('login', this.formName.userName) this.$router.push('/home'); } 第2步:store => i...

qiaoguoqing的专栏 930

Vue中实现用户登录及token验证

Token: Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。 Token 可以设置有效期,为了解决在操作过程不能让用户感到 Token 失效这个问题,在服务器端保存 Token 状态,用户每次操作都会自动刷新(推迟) Token 的过期时间——Session 就是采用这种策略来保

duansamve的博客 2676

前端Web案例-登录&退出

本文介绍了员工管理系统的前端功能实现,主要包括员工信息的增删改查、登录认证及部署方案。系统采用Vue3+Element Plus+Pinia技术栈,实现了员工信息的修改(分查询回显和保存两步)、单个/批量删除功能,以及包含表单验证的数据交互。登录模块通过Pinia存储令牌,并利用axios拦截器实现请求认证。系统还解决了页面刷新数据丢失问题,采用pinia-plugin-persistedstate实现状态持久化。最后介绍了项目打包部署到Nginx的配置方法,包括反向代理设置。整个系统实现了完整的员工管理业

sjdjjdkd的博客 986

【Vue】Pinia管理用户数据

基本思想:Pinia负责用户数据相关的state和action,组件中只负责触发action函数并传递参数。

Jerryqjr的博客 929

vuex保存登录的数据

第一种用法:传数据给到vuex里面的方法 第二种用法;获取vuex里面的数据 第三种用法;获取vuex里面的方法

weixin_44600235的博客 1968

【wiki知识库】08.添加用户登录功能--前端Vue部分修改

wiki知识库,打你打造个人知识网站---登录功能的实现--前端

qq_61024956的博客 1323

Element-ui中Token的使用---Vue实现完整的系统登录退出功能

Element-ui中如何使用Token 一、技术提要 涉及element-ui中的validate方法 二、具体实现 1、表单部分代码 <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form"> <!-- 用户名 --> <el-form-item prop="username"&

旭哥的博客 2468

nuxt全栈仿美团官网08——获取登录状态和退出

平时在有道云上做笔记,直接发到这里格式全乱了,有空整理,大家也可查看有道云链接: http://note.youdao.com/noteshare?id=652d33bf19e7cb1c1932ffb3bf3ee194&sub=4A2E01D5AA9A46F1A9D8742443C1A43A 获取登录状态 当加载一个页面时需要知道当前是否有用户已经登录,比如登录后首页的登录按钮就...

关中刀客在青岛 666

Vue3 Pinia中store清理最佳实践 $reset 和 $dispose

不要随意使用$dispose()- 除非你真的需要销毁整个 store 且确定没有其他地方使用组件卸载时的清理javascript// 只清理当前组件的订阅// 取消订阅// 或者重置特定数据});用户切换时的清理(放在登录/登出逻辑中):javascript// 登录成功后// 清理旧数据// 或 clearUserData()// 设置新用户数据store 设计建议javascript// 区分全局数据和组件特定数据。

BillKu的博客 757

Vue根据用户权限来控制导航栏和按钮是否显示

state: {userInfo: null, // 用户信息初始为null},getters: {},},},actions: {},},try {// getLoginUser为获取登录用户信息的相关方法,根据实际的情况替换},modules: {},})1 在utils文件夹下新增一个permission.js文件,用于定义hasPermission方法2 在全局引入这个方法// 将hasPermission添加到Vue原型router,store,

weixin_48469176的博客 455
上一篇: Vue系列5 - Vue+axios 路由拦截器
下一篇: openlayer3 系列 4 - 加载天地图
西北码农
博客等级 码龄12年 1万+粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值