应用中,保持登录状态是常见需求,本文讲解使用uni-app框架时如何保持用户登录状态。
即:初次进入应用为未登录状态------->登录---------->关闭应用,再次打开--------->为已登录状态
传统应用保持登录状态的方式是通过读取 cookie 来判断是否是登录状态,但是uni-app不支持对cookie的读写。因为uni-app框架的主体是 VUE,所以可以使用 vuex 进行登录态管理。
关于vuex中定义的全局变量和方法需要定义在指定目录的文件内。
即在项目目录下新建名称为 store 的目录,目录下创建用于定义全局变量和方法的 js 文件,如下图:

index.js文件内容如下图所示:

想要定义的这个 js 文件中的变量和方法能在各个页面使用并生效,需要先在项目目录下的 main.js 文件中导入这个 js 文件并声明方法,如下图所示:

声明结束后就可以在页面中监控全局变量和相应方法了,下面在一个登录页面中具体展示。

先在页面导入vuex的方法,如下:


然后,在 computed 计算属性方法中使用 mapState 对全局变量进行监控,在 method中使用 mapMutations 进行全局方法监控,如下所示:

定义登录成功后跳转到个人中心的函数,如下:

网络请求成功后,在回调函数 success 中调用该方法,并把回调函数的返回值数据传给 login 方法,如下:

随后 index.js 文件中的login方法会把传过来的用户数据保存在本地缓存中。

app没等进入应用时由APP.vue文件中的周期函数对app进行监听,所以在加载函数中定义方法,从本地缓存中取出用户数据进行登录,这样只要不清除本地缓存,每次打开应用的时候都会时登录状态,不需要反复发起网络登录请求,如下:

由于此种方式是把第一次登陆的用户账户信息保存在本地缓存,可能会遇到以下问题:

(1)如果用户的密码等隐私信息在后台并没有进行加密处理,则会保存在本地缓存,有可能被其他拥有读取缓存权限的应用获取导致隐私泄露。

解决办法:正规的开发流程中,后台返回到前端的用户数据中,绝大部分信息都应该是通过MD5等加密算法加密过后的,如果没有,应进行后台处理。

(2)通常需要登录的应用,后台的token令牌是有有效期限的,期限过了之后所有需要用到token的接口请求都会失败。保存在本地的缓存如果不重新执行登录操作刷新缓存数据,则会有token失效的问题。

解决办法:(1)在前端也编写缓存清理期限,与后台保持一致,到达期限后提示用户登录失效,请重新登录。

(2)后台提供用户信息获取接口,在应用的生命周期函数里调用接口刷新缓存。
转载:https://www.cnblogs.com/edward-life/p/11181139.html

uniapp中vuex状态管理相关推荐

  1. vue2中vuex状态管理的理解(菜单面包板)

    本片理解基于vue2对应的Vuex文档,结合了官网文档以及众多前辈大佬所发布的帖子,由衷表示感谢. vuex的超详细讲解和具体使用细节记录 随着我们进一步扩展约定,即组件不允许直接变更属于 store ...

  2. 在vue项目中引用vuex状态管理工具

    在vue项目中引用vuex状态管理工具 一.vuex是什么? 二.使用步骤 1.引入库 2.在main.js文件引入配置 3.配置store/index.js文件 4.获取state数据 5.获取ge ...

  3. Vuex 状态管理的工作原理

    Vuex 状态管理的工作原理 为什么要使用 Vuex 当我们使用 Vue.js 来开发一个单页应用时,经常会遇到一些组件间共享的数据或状态,或是需要通过 props 深层传递的一些数据.在应用规模较小 ...

  4. vue2项目复习01-关闭elint检校,src文件别名,路由传参的对象写法,代理解决跨域问题,nprogress,vuex状态管理库,store的模块式开发,节流与防抖,编程式导航+事件委托路由跳转

    1.关闭elint语法校验 创建vue.config.js //关闭elint语法校验 {lintOnSave:false; } 2.src文件夹配置别名 jsconfig.json配置别名 @代表s ...

  5. [vuex]状态管理vuex

    vuex 状态管理vuex,之前一般都是通过一个全局js文件实现全局设置,在vue中通过vuex进行管理 简介 vuex是专为vue.js应用程序开发的状态管理模式.它采用集中存储管理应用的所有组件的 ...

  6. 【3D商城】使用Vuex状态管理完成购物车模块

    [3D商城]使用Vuex状态管理完成购物车模块 创建购物车的全局数据 添加产品到购物车 导航栏的购物车模块 结果 常见问题总结 创建购物车的全局数据 在store的index.js中 ,创建购物车变量 ...

  7. Vue项目 成员管理系统 Vuex状态管理(10)

    Vuex是一个专为Vue.js应用程序开发的状态管理模式.它采用集中式储存管理应用的所有组件的转台并以相应的规则保证装填以一中可预测的方式发生变化. Vuex可以将组件中的某些属性.值或者方法拿出来统 ...

  8. 【vuex状态管理案例mutations和actions区别】

    目录 vuex 状态管理 传统组件传值的缺点 案例 加减 效果 现在我们希望它是两个计数器的数同时加加减~ 先来看一下减的 父组件 子组件 加的是一样的逻辑哦 虽然这样可以实现我们想要的效果但是,还是 ...

  9. vuex状态管理,用最朴实的话讲解最难懂的技术,

    一.案例演示 引入vuex 1.利用npm包管理工具,进行安装 vuex.在控制命令行中输入下边的命令就可以了. npm n install vuex --save 需要注意的是这里一定要加上 –sa ...

最新文章

  1. ACM第一名:基于轨迹感知多模态特征的视频关系检测
  2. Android—监听器
  3. STM32F103CUBE学习笔记 一 环境安装
  4. 调用未知DLL中的导出函数
  5. C++设计模式-Facade模式
  6. 打孔屏+屏下指纹!这届iPhone全是安卓玩剩下的
  7. Java中的基本类型和引用类型变量的区别
  8. iphone se卡贴教程
  9. 校园网下,虚拟机IP与主机IP不一致及nfs挂载
  10. app安全测试:OWASP ZAP 2.8 使用指南(四):ZAP扫描移动应用安全
  11. dns按来路ip智能解析_云解析实现智能解析
  12. 宏观经济政策的六个争论问题 - 异想天开
  13. 数字 IC 技能拓展(18)如何快速上手 FPGA 开发板呢
  14. qt屏幕漫天雪花飘落
  15. RCAN论文笔记:Image Super-Resolution Using Very Deep Residual Channel Attention Networks
  16. python之sklearn学习笔记
  17. 程序员很少上《非诚勿扰》电视节目相亲之分析
  18. flex effect
  19. 【离散数学】数学归纳法
  20. KunlunBase集群管理接口

热门文章

  1. 算法学习之路|数位dp简要分析
  2. 每天一个linux命令(9):touch命令
  3. Mysql无法创建外键的原因
  4. Linux下,如何给PHP安装pdo_mysql扩展
  5. 百度网页分享js代码
  6. Mint17 FireFox重装英文版问题
  7. 面性对象中栈内存和堆内存的理解
  8. linux 系统相关服务解释
  9. 用时间换才华:李开复给创业者的7条时间管理建议 【转载】
  10. 存储过程 psal emp.sal%type是什么意思