router.beforeEach((to,from,next)=>{// …})
    守卫方法接收三个参数:
    to: Route: 即将要进入的目标路由对象
    from: Route: 当前导航正要离开的路由
    next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

    在前端路由跳转中,路由跳转前都是会经过beforeEach,而beforeEach可以通过next来控制到底去哪个路由。根据这个特性我们就可以在beforeEach中设置一些条件来控制路由的重定向。常见的使用场景有:1、验证用户是否登录(若未登录,且当前非登录页面,则自动重定向登录页面);2、用户权限;3、用户输入的路路径是否存在,不存在的情况下如何处理,重定向到哪个页面。

    在此可做一些白名单处理

    1. const whiteList = ['/login','/regist','/regist/success', '/test'] // 不重定向白名单
    2. router.beforeEach((to, from, next) => {
    3. if (getToken()) { //有token缓存
    4. if (to.path === '/login' || to.path=='/regist' || to.path=='/regist/success' || to.path == '/test') {
    5. next()
    6. } else {
    7. 这里可以对菜单做一些处理,比如动态获取菜单,菜单权限控制等
    8. }
    9. } else {
    10. if (whiteList.indexOf(to.path) !== -1) {
    11. next()
    12. } else {
    13. next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
    14. }
    15. }
    16. })