位置: IT常识 - 正文

vue设置cookie和路由守卫(vue set-cookie)

编辑:rootadmin
vue设置cookie和路由守卫

推荐整理分享vue设置cookie和路由守卫(vue set-cookie),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue如何设置cookie,vue js-cookie,vue js-cookie,vue如何设置cookie,vue set-cookie,vue如何设置cookie,vue中cookie的用法,vue如何设置cookie,内容如对您有帮助,希望把文章链接给更多的朋友!

vue项目中登录页面用户登录成功后,会把用户信息存储到cookie中,然后跳转进入首页,当用户没有登录时,直接输入页面地址会经过路由守卫检测cookie中是否存在用户信息,如果不存在,重定向到登录页让用户进行登录。接下来从配置cookie方法开始。

首先在项目中新建util/cookie.js文件作为存放cookie方法的js

在cookie.js中写进如下代码,该代码封装的三个方法,setCookie:存储cookie; getCookie:读取cookie; clearCookie:删除指定cookie;最后把这三个方法导出,便于全局调用,每行代码具体什么意思可观看以下教程:cookie教程一,cookie教程二,讲解的非常详细。

[](javascript:void(0)😉

/** * @description 保存cookie * @param {Object} json 需要存储cookie的对象 * @param {Number} days 默认存储多少天 */function setCookie(json, days) { // 设置过期时间 let data = new Date( new Date().getTime() + days * 24 * 60 * 60 * 1000 ).toUTCString(); for (var key in json) { document.cookie = key + "=" + json[key] + "; expires=" + data; }}/** * @description 获取cookie * @param {String} name 需要获取cookie的key */function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) { return unescape(arr[2]) } else { return null }}/** * @description 删除cookie * @param {String} name 需要删除cookie的key */function clearCookie(name) { let json = {}; json[name] = ''; setCookie(json, -1)}export default { setCookie, getCookie, clearCookie}

[](javascript:void(0)😉

然后在main.js中引入刚刚写好的cookie.js,并通过Vue.prototype设置cookie这个字段作为全局变量

引入完毕之后就可以在任意页面中通过 this.cookie.方法名(值)来增删查cookie。

this.cookie.setCookie() //存cookie

this.cookie.getCookie() //读cookie

this.cookie.clearCookie() //删cookie

首先在项目中创建登录页Login.vue编写登录页面,登陆成功之后通过this.cookie.setCookie往cookie中存入用户信息。

[](javascript:void(0)😉

<template> <div> <form action> <div> 账号: <input type="text" v-model="name" /> </div> <div> 密码: <input type="password" v-model="password" /> </div> <div> <button @click="login" type="submit">登录</button> </div> </form> </div></template><script>export default { data() { return { name: "", password: "" }; }, methods: { login() { if (!this.name) { alert("请填写账号"); return; } if (!this.password) { alert("请输入密码"); return; } if(this.password&&this.name){ // 以json格式传给setCookie方法存入信息,方法里面会循环遍历该json以单个数据存储的方式,多次存入cookie中      // 注:cookie不支持直接以json的方式存入 let loginInfo={ LoginName:this.name, openId:"asfafsfsfsdfsdfsdfdsf" } // 调用setCookie方法,同时传递需要存储的数据,保存天数 this.cookie.setCookie(loginInfo,7) alert("登录成功") // 跳转到首页 this.$router.replace('/') } } }};</script>

[](javascript:void(0)😉

登陆成功之后再浏览器的cookie中可以看到存进去的LoginName,openId,以及他们的过期时间。

vue设置cookie和路由守卫(vue set-cookie)

登录成功我们跳转到了home.vue页面,通过this.getCookie( “LoginName” )获取一下登录名。

然后点击退出的时候需要清除一下cookie,然后返回登录页。

点击退出之后清除cookie,并且跳转到了登录页面,现在去查看cookie

发现里面是空白的。

至此我们第一步基本完成了,接下在跳转时要验证cookie里面是否有登录信息,如果没有则不让跳转并且跳转到登录页。也就是要用到路由守卫。

上一篇我们已经封装好了cookie方法,登录成功之后也可以吧用户信息存到cookie中,接下来需要在router/index.js中引入一下cookie.js文件

然后继续添加以下代码

/*\* beforeEach:从一个页面跳转到另外一个页面时触发\* to:要跳转的页面\* from:从哪个页面出来\* next:决定是否通过*/router.beforeEach((to, from, next) => { // 如果跳转的页面不存在,跳转到404页面 if(to.matched.length===0){ next('/404') } if (cookie.getCookie("openId")) { next() } else { if (to.path === "/Login") { next() } else { next('/Login') } }})

[](javascript:void(0)😉

router.beforeEach意思是在router.index设置了一个全局守卫,只要发生页面跳转,会执行里面的代码,首先先去判断跳转的页面是否存在,如果不存在进到404页面,然后调用cookie.getCookie()方法读取用户信息,如果不存在代表没有登录,用next(‘/Login’)进入Login登录页面进行登录,如果读取到了用户信息,不做拦截直接放行。

扩展

全局后置钩子

router.afterEach((to,from)=>{}),表示从当前页面离开时进行判断,一般用来跳转页面时提示用户是否离开该页面。

路由独享的守卫beforeEnter:(to,from,next)=>{},用法与全局守卫一致。只是,将其写进其中一个路由对象中,只在这个路由下起作用。

本文链接地址:https://www.jiuchutong.com/zhishi/292364.html 转载请保留说明!

上一篇:Ngo Dong河两岸的稻田美景,越南宁平省 (© Jeremy Woodhouse/Getty Images)(如何知道是干皮还是油皮)

下一篇:vue导出word(vue导出word文档打开报错,内容有问题)

  • 2017最新微信公众号加粉丝的方法(新版微信公众平台)

    2017最新微信公众号加粉丝的方法(新版微信公众平台)

  • 荣耀手机自动弹出广告怎么关闭(荣耀手机自动弹出一些广告在哪里关闭)

    荣耀手机自动弹出广告怎么关闭(荣耀手机自动弹出一些广告在哪里关闭)

  • 爱奇艺小窗口怎么关闭(爱奇艺小窗口怎么没了)

    爱奇艺小窗口怎么关闭(爱奇艺小窗口怎么没了)

  • 腾讯视频怎么加速播放(腾讯视频怎么加好友)

    腾讯视频怎么加速播放(腾讯视频怎么加好友)

  • 淘宝账户已被冻结暂时无法登录怎么办(淘宝帐被冻结怎么办)

    淘宝账户已被冻结暂时无法登录怎么办(淘宝帐被冻结怎么办)

  • 荣耀play指纹设置不见了(荣耀play指纹设置在哪)

    荣耀play指纹设置不见了(荣耀play指纹设置在哪)

  • 秘乐短视频是哪家公司的(秘乐短视频到底怎么了)

    秘乐短视频是哪家公司的(秘乐短视频到底怎么了)

  • 小米8万能遥控器怎么控制空调(小米8万能遥控没有添加按钮)

    小米8万能遥控器怎么控制空调(小米8万能遥控没有添加按钮)

  • 华为cdyan00什么型号(华为cdyanoo)

    华为cdyan00什么型号(华为cdyanoo)

  • wps要钱吗(电脑wps要钱吗)

    wps要钱吗(电脑wps要钱吗)

  • 手机顶端有个电话上有HD是什么(手机顶端有个电话标志)

    手机顶端有个电话上有HD是什么(手机顶端有个电话标志)

  • 照片上传icloud还占内存吗(照片上传icloud1%)

    照片上传icloud还占内存吗(照片上传icloud1%)

  • 佳能相机黑屏怎么恢复(佳能相机黑屏怎么解决)

    佳能相机黑屏怎么恢复(佳能相机黑屏怎么解决)

  • 苹果手机进水充电充不进去电怎么办(苹果手机进水充电时候显示闪电接口检测到液体)

    苹果手机进水充电充不进去电怎么办(苹果手机进水充电时候显示闪电接口检测到液体)

  • 喜马拉雅听不了怎么回事(喜马拉雅听不了央广)

    喜马拉雅听不了怎么回事(喜马拉雅听不了央广)

  • 支付宝步数要打开才更新吗(支付宝步数要打开运动才有吗)

    支付宝步数要打开才更新吗(支付宝步数要打开运动才有吗)

  • 微信怎样才能在电脑上直接登录(微信怎样才能在附近的人看到自己)

    微信怎样才能在电脑上直接登录(微信怎样才能在附近的人看到自己)

  • photoshop是什么意思(ps什么意思)

    photoshop是什么意思(ps什么意思)

  • 写字板是一个什么程序(写字板是一个小型的什么软件)

    写字板是一个什么程序(写字板是一个小型的什么软件)

  • 苹果手机能下载应用宝吗?(苹果手机能下载微信分身吗)

    苹果手机能下载应用宝吗?(苹果手机能下载微信分身吗)

  • xr能用动态壁纸吗(xr能不能用动态壁纸)

    xr能用动态壁纸吗(xr能不能用动态壁纸)

  • 韩剧tv下载的视频在哪个文件夹

    韩剧tv下载的视频在哪个文件夹

  • 学信网最初密码是什么(学信网最初密码怎么查)

    学信网最初密码是什么(学信网最初密码怎么查)

  • 车辆购置税退税计算
  • 进口增值税的税率
  • 手机上税票怎么开
  • 食堂费用没有发票可以税前扣除吗
  • 货物或应税劳务服务名称怎么填
  • 货物运费包含哪些项目
  • 自然人扣缴是什么意思
  • 单品毛利计算公式怎么算
  • 代扣代缴个人所得税手续费返还 增值税
  • 营改增账务处理举例
  • 外贸公司是做什么的 经营范围是什么
  • 退回的费用如何入账
  • app data文件夹
  • 预付加油充值卡可以报销吗
  • 残疾人保障金是强制性的吗
  • php smarty
  • php字符串函数大全
  • php中字符串函数
  • 解决肚子胀气最快方法
  • 设备租赁费属于固定成本吗
  • 处置抵债资产的增值税计入
  • 相关企业之间的竞争
  • 前端使用vue
  • 库存现金盘盈影响营业利润吗
  • arcore如何使用
  • 企业支付宝要交税吗 要交多少钱
  • session跨域导致失效
  • 一般纳税人零申报怎么报税
  • 前端向后端传递对象数组
  • 数据挖掘的四种基本方法
  • Python列表元素的删除
  • 个税系统为什么没有累计数据
  • 卖家运费险是不是退货免费
  • 账户验证交易
  • 企业贷款利息是多少
  • 织梦使用手册
  • 将织梦dedecms转换到wordpress
  • sqlserver 比较时间
  • dedecms配置
  • 电梯维保费属于什么费用
  • 金蝶如何新增客户
  • sqlserver判断数字
  • 烟叶税的计税依据如何确定
  • 申报抵扣了不做账怎么处理?
  • 产业扶持资金账户是什么
  • 防伪税控服务费怎么交
  • 增值税专用发票查询系统官方网站
  • 企业注销递延所得税资产怎么处理
  • 普通发票作废如何恢复
  • 如何编写wa
  • 商业企业库存商品
  • 判断某个字段的值是否在指定的范围内
  • win2003 安装iis
  • bios解除
  • xp系统为什么网页打不开了
  • watchdog. sys
  • ubuntu怎样
  • centos页面
  • window 启动
  • 笔记本摄像头摄像
  • ubuntu写脚本
  • mac屏幕显示设置
  • win10系统环境设置
  • win10怎么看电池寿命
  • unity3d怎么删除模型
  • 你所知道的三维建模软件有哪些?
  • opengl裁剪平面
  • jQuery插件封装时如要实现链式编程,需要
  • 如何从0开始赚钱
  • js多选
  • nodejs连接mysql的历程
  • jquery 列表实现
  • android圆形按钮
  • jqueryif判断
  • jQuery EasyUI Tab 选项卡问题小结
  • python 电话号码
  • python 入门
  • 耕地占用税减免税范围包括
  • 上海嘉定南翔房子
  • 企业资质怎么报审
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设