前端防止url输入地址直接访问页面

时间:2023-02-03 17:10:50

首先,解决这个问题要搞明白此url是从程序内部跳转还是直接在地址栏输入的,如果是程序内部跳转,那就好办啦。方法如下:

  判断用户是否登录状态,是否携带token

  使用router.beforeEach注册一个全局前置守卫,判断用户是否登录。

  

router.beforeEach((to, from, next) => {
   if (to.path === '/login') {
      next();
      console.log(next)
   } else {// 每次页面跳转执行,token或openId錯誤,均提示跳转到首页
      let token = sessionStorage.getItem('token');
      console.log(token)
      if (token === null || token === '' || token === undefined) {
         Toast('token错误,请重新登录')
         setTimeout(function () {
            next('/login');
         },1000)
      }else{
         next();
      }
   }
});

 

 HttpRequestServlet.getHeader(‘Referer’)的值如果是空的,说明此url是地址栏直接访问的,像这种的需要拦截,然后时期返回登录页面!反之则是从程序内部跳转,可以放行!