在vue后台管理系统场景下,不同的用户有不同的权限

在用户第一次使用普通管理员账号登录成功之后返回的数据里面有token字段,本地存储token字段

  • 如果他返回登录页,使用另外一个超级管理员的账号再次登录,还是会返回token字段,重新设置localStorage存储的token
  • 可以看到,浏览器里面的token字段已经更新,但是因为是单页面应用,跳转路由进入首页之后,fetch.js里面封装的http方法获取到的localStorage还是上次的token字段
    原因:单页面应用只有reload,js才会刷新, 页面不刷新js不会重新获取localStorage的值,这个字段就不会更新,所以用户看到的仍然是上次登录的权限界面。为了解决这个问题,有以下2种解决办法:
  1. location.href = ‘/home’ 使用location.href跳转页面,可以刷新页面
  2. window全局监听localStorage的setItem保存token字段时的事件
    重构setItem,在setItem里面修改localStorage值时,派发一个事件,window全局监听,值发生改变就立即触发监听函数,改变对象的值
    tools.js里面封装dispatchEventStroage函数并抛出
    function dispatchEventStroage () {
    const signSetItem = localStorage.setItem
    // 重构setItem
    localStorage.setItem = function (key, newValue) {
    // 实例化自定义事件
    let setEvent = new Event(‘s
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值