天天看點

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

上篇文章我們發現有些不使用任何接口的頁面,在不登陸狀态下是可以進行通路的,是以本篇文章解決一下這個問題。

1.使用

導航守衛 導航守衛是在路由定義之後,進行使用之前進行的相關函數操作。類似中間件,可以說實際上他就是一個鈎子函數的中間件。
技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

// 導航守衛
router.beforeEach((to, from, next) => {
  // 列印to,檢視内容
  console.log(to)
  // 将導航守衛看作一個中間件,不執行next()無法進入頁面
  next()
})           
技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

進入建立廣告位頁面,檢視列印結果,可以查詢到建立廣告位功能的路由資訊:

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

是以我們要做的就是在路由中添加資訊,根據我們添加的資訊進行判斷是否可以進行登入。

2.添加

路由元資訊

查詢官方文檔中,meta作為路由元資訊被我們查詢。通過配置meta字段來抓取登陸驗證節點。

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

官方文檔中的方法是想要哪個頁面需要被路由限制,就對哪個頁面添加路由元資訊。而我們的admin端除了登入頁面,都需要被路由限制,是以在登陸頁面添加isPublic,意為隻有login頁面是公衆通路頁面,其他均為需登入的管理者頁面。

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

測試,分别在建立廣告位頁面和登陸頁面列印資訊:

(1)建立廣告位頁面,資料沒有變化:

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

(2)登入頁面,可以看到我們定義的isPublic:

技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-12-4.登陸的前端vue-router路由驗證(導航守衛)

3.設定路由守衛函數

// 導航守衛
router.beforeEach((to, from, next) => {
  // 如果沒有定義的isPublic和token值,則跳轉到登入頁
  if(!to.meta.isPublic && !sessionStorage.token){
    return next('/login')
  }
  // 否則進入該頁面
  // 将導航守衛看作一個中間件,不執行next()無法進入頁面
  next()
})           

測試,進入建立廣告位頁面,此時直接輸傳入連結接已進不去了。

先登入再使用sessionStorage.clear(),重新整理頁面再測試,直接跳轉到登陸頁面。

完成。

4.總結

到此,admin端基本内容已經完善,後續有新東西繼續補充。

下篇文章我們開啟web端編輯,更加深入了解vue的元件和UI。

繼續閱讀