vue實現未登錄跳轉到登錄頁面


環境:vue 2.9.3; webpack;vue-router

目的:實現未登錄跳轉

例子:直接在url地址欄輸入...../home,但是這個頁面要求需要登陸之后才能進入,判斷的值就通過登陸之后給本地緩存存入的token判斷,如果沒有就跳轉到登錄頁面,有的話就打開。

圖示:

1、直接在url地址欄輸入http://127.0.0.1:9000/#/home,但是頁面會直接跳轉到登錄頁,而且會帶上參數。

 

--------------------------------------------分割線----------------------------------------------

vue-router需要安裝

首先配置路由

/src/router/index.js 

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',// 登錄
      name: 'Login',
      component: resolve => require(['@/PACS/pages/Login'],resolve)
    },{
      path: '/home',
      name: 'Home',
      meta: {
        requireAuth: true,  // 判斷是否需要登錄
      },
      component: resolve => require(['@/PACS/pages/Home'],resolve)
    } 
    ]

})

 ## 增加了字段 requireAuth 用來判斷該路由是否需要登錄。

然后配置main.js

//  路由判斷登錄 根據路由配置文件的參數
router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requireAuth)){  // 判斷該路由是否需要登錄權限
    console.log('需要登錄');
    if (localStorage.token) {  // 判斷當前的token是否存在 ; 登錄存入的token
      next();
    }
    else {
      next({
        path: '/',
        query: {redirect: to.fullPath}  // 將跳轉的路由path作為參數,登錄成功后跳轉到該路由
      })
    }
  }
  else {
    next();
  }
});

這里是登錄時存入的token

##這樣的話登錄時就會直接跳轉到登錄頁面。

實現登錄成功后再跳回開始輸入的頁面,就要用到后面傳遞的值了。

如果包含redirect就跳轉到剛剛輸入的頁面。

注意:如果將用戶數據保存到localstorage是不合理的,這里只是給出一種思路,如果登陸之后不清空瀏覽器數據,token一直存在的,判斷就會失效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM