最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 在vue中使用session Storage和vuex保存用户登录状态

    正文概述 掘金(harold1024)   2020-12-23   965
        做项目时有时需要保存用户的登陆状态,要做到刷新页面用户状态不变,以及实现登出功能,这里介绍sessionStorage和vuex两种可以实现的方式,那么这两种方式有什么优缺点呢,分别在什么情况下使用呢?首先sessionStorage是基于会话的,不能跨页调用数据,一个页面修改了,另一个页面监听不到修改的数据. 而vuex需要一些依赖,小型项目就显得有点大材小用,所以在小型应用中直接访问sessionStorage就能实现保存登录状态的功能,而且这种方式比vuex要简单很多,但是在大型项目中,需要在多组件之间共享登陆状态,在页面不刷新的情况下下,取vuex中的值就可以判断了.
    

    1.使用session Storage保存用户登录状态

    图1 图一所示,sessionStorage.setItem即为保存数据方式,第一个参数为变量名,第二个参数为所储存的数据,在登陆页面中,登陆成功后返回用户登陆信息.

    图二 如图二,在其他页面中查看用户登陆登陆状态,在钩子函数mounted中,通过sessionStorage.getItem方式应用数据到次页面中.

    图三 图三所示,在main.js中判断登陆的各个状态下,sessionStorage里数据的储存情况,此处偏向业务逻辑了,各位看官请根据项目需求酌情编码.

    2.使用session Storage+vuex保存用户登录状态

    想要使用vuex第一步当然是安装vuex了, vuex中文官网已经介绍的非常详细了,https://vuex.vuejs.org/zh/installation.html,只要按照步骤安装即可.

    vuex目录结构 vuex安装成功后,构建vuex目录,这样做的目的是降低代码的耦合度,方便以后的修改与维护。

    store.js

    getters.js

    mutations.js

    actions.js 接下来,依旧在用户登录的时候,我们就需要将用户名和token存放入sessionStorge,再由sessionStorage传入vuex中。

    登陆页 如上图,在登录成功之后,就实现了上述的功能。vuex的dispatch和commit方法是有区别的。将用户名放入vuex,调用setUser即执行actions.js中的方法来改变状态,则进入mutations.js中的userStatus方法,最终实现改变store.js中的三个状态。那么其实到这里,已经实现了将用户的状态,即用户名和token放入sessionStorage中的要求了。

        vuex中的状态一旦页面刷新,就不再存在。所以为了实现在刷新页面时,仍然展现出用户头像,就需要从sessionStorage种提取状态再传值给vuex。
    

    computed里的逻辑判断 用户登录之后,如果再次回到登录界面,必然是执行了登出操作。所以还是在main.js加一个路由控制就可以了。

    login的组件内守卫 因为介绍了两种保存用户登录状态的技术,所以为了呈现效果在代码上进行了改动,有些地方的变量名称出现了一些错误,希望各位看官见谅!


    起源地下载网 » 在vue中使用session Storage和vuex保存用户登录状态

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元