前置守卫是为了验证用户信息真实性,一些内容只能在用户登陆以后才能进行查看,例如个人中心,我的购物车,等个人页面,非隐私页面

用router.beforeEach进行验证,这个方法必须写在router实例之后

三个参数 to===到哪里去

    from===从哪里来

    next===放行

router.beforeEach((to,from,next)=>{
if(to.matched.some((route)=>route.meta.requireAuth)){
if(localStorage.getItem('ticket')){
next()
}else{
next('/login?returnURL='+to.path)
} }else{
next()
}
});

to.matched.some((route)=>route.meta.requireAuth)是有效的检验方法,可以从父元素以及祖先元素进行验证,

在你需要守卫的组件上加入meta标签就可以啦,

meta:{
requireAuth:true
}

在vue cli脚手架中需吧router中代码稍加改动就可以使用啦

const router= new Router({
linkExactActiveClass: 'active',
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path:'/',
component:Index,
children:[
{
path:'channel/:id',
component:Channel,
children:[
{
path:'/topic/:num',
component:Topic
}
]
} ]
},{
path:'/login',
component:Login,
children:[
{
path:'reg',
component:Reg,
meta:{
requireAuth:true
},
},
{
path:'myself',
component:Myself,
meta:{
requireAuth:true
},
}
]
}
]
})
router.beforeEach((to,from,next)=>{
if(to.matched.some(route=>route.meta.requireAuth)){
const url=localStorage.getItem('login');
if(url=='1'){
next();
}else{
next('/login?returnURL='+to.path);
} }else{
next();
} });
export default router

把 export 放在最后,这样就可以实现前置守卫

vue中的前置守卫的更多相关文章

  1. vue中的导航守卫

    官方文档地址: 导航守卫:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html 好的,重点内容 router.beforeEac ...

  2. Vue中的导航守卫(路由守卫)

    当做Vue-cli项目的时候感觉在路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-router 提供的 beforeEach可以方便地实现全局导航守卫(navigation-g ...

  3. 5分钟学会vue中的路由守卫(导航守卫)

    在项目开发中每一次路由的切换或者页面的刷新都需要判断用户是否已经登录,前端可以判断,后端也会进行判断的,我们前端最好也进行判断. vue-router提供了导航钩子:全局前置导航钩子 beforeEa ...

  4. nuxtjs中使用路由守卫

    在vue中的路由守卫一般是来验证token失效什么的,当然也可以设置权限啦,在nuxtjs中如何使用路由守卫呢,话不多说,直接上代码 在plugins目录下简历route.js export defa ...

  5. vue中的路由独享守卫的理解

    1.vue中路由独享守卫意思就是对这个路由有一个单独的守卫,因为他的守卫方式于其他的凡是不太同 独享守卫于前置守卫使用方法大致是一样的 在路由配置的时候进行配置, { path:'/login', c ...

  6. 解决vue组件内前置路由守卫beforeRouteEnter无法获取上下文this

    问题描述 vue框架,只有在报名页面报名成功,然后自动跳转到订单详情,才弹出一个引流弹窗,其他情况均不弹出,我就想到使用vue 的组件内前置守卫beforeRouteEnter来实现.beforeRo ...

  7. vue之路由导航守卫-全局前置守卫

    一.使用方式 全局前置守卫用于在路由配置生效之前进行一些动作,可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... ...

  8. vue中keepAlive的使用

    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态:vue里提供了keep-alive组件用来缓存状态.可以用以下几种方案 ...

  9. vue中使用keepAlive组件缓存遇到的坑

    项目开发中在用户由分类页category进入detail需保存用户状态,查阅了Vue官网后,发现vue2.0提供了一个keep-alive组件. 上一篇讲了keep-alive的基本用法,现在说说遇到 ...

随机推荐

  1. VS2008水晶报表变两页(重装系统后)

    找到水晶报表中的设置-打印机设置,发现打印机名称是 Microsoft XPS Document Writer (已重定向2),

  2. OC 开发规范指南 - 个人见解写的很好

    纽约时报 移动团队 Objective-C 规范指南 这份规范指南概括了纽约时报 iOS 团队的代码约定. 介绍 关于这个编程语言的所有规范,如果这里没有写到,那就在苹果的文档里: • Objecti ...

  3. 利用dom4j读写XML

    public static HashMap<String, String> ReadConfig() { HashMap<String, String> map=new Has ...

  4. 弹框alertView

    // 创建一个弹框UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“标题” message:@“显示的具体内容” delegate:s ...

  5. Java并发-ConcurrentModificationException原因源码分析与解决办法

    一.异常原因与异常源码分析 对集合(List.Set.Map)迭代时对其进行修改就会出现java.util.ConcurrentModificationException异常.这里以ArrayList ...

  6. Luogu 1341 无序字母对 - 欧拉路径

    Solution 找一条字典序最小的欧拉路径. 用 $multiset$ 存储领接表. 欧拉路径模板传送门 Code #include<cstdio> #include<cstrin ...

  7. Luogu 4556 雨天的尾巴 - 启发式合并线段树

    Solution 用$col$记录 数量最多的种类, $sum$记录 种类$col$ 的数量. 然后问题就是树上链修改, 求 每个节点 数量最多的种类. 用树上差分 + 线段树合并更新即可. Code ...

  8. shell脚本返回字符串

    shell脚本的return只能返回数值类型,可是我们很多时候想返回字符串 #!/bin/sh function getStr () { String="very good" ec ...

  9. 超全面!UI设计师如何适配2018新款iPhone

    北京时间9月13日凌晨1点,苹果在美国加利福尼亚州的Apple Park园区召开了2018年苹果秋季新品发布会. 很多人对这次科技界的春晚充满了期待,除了那些让人“剁手”的新品,设计师关注的还有新手机 ...

  10. mfc获取exe的版本信息

    CString GetFileVersion(const CString& sTargetFileName){ DWORD nInfoSize = 0, dwHandle = 0; nInfo ...