本文跟大家分享了vue實現登入後頁面跳到之前頁面的一個功能,有這方便需要的朋友學習參考下吧。
在開發中我們經常遇到這樣的需求,需要使用者直接點擊一個連結進入到一個頁面,使用者點擊後連結後會觸發401攔截返回登入介面,登入後又跳到連結的頁面而不是首頁,這種問題該如何做?
先說一下我們需要用到的幾個API:
1.router.currentRoute:目前的路由資訊對象,我們可以透過router.currentRoute.fullPath獲得解析後的URL,包含查詢參數和hash 的完整路徑,如果要存取的頁面的路由有命名(name)的話,可以透過router.currentRoute.name取得目前路由的名稱。
2.router.replace:作用和router.push相同,不過它不會為history增加新紀錄,而是替換目前的history記錄。
由於大家的程式碼寫的都不一樣,我就不放我具體的實作程式碼,簡單介紹一下想法:
1.用戶點開連結後,跳到的目標的路由頁面,然後觸發401攔截器,返回登入頁面:
//401拦截 if(status == "401"){ router.push("/login") }
2.我們可以在401攔截的時候將目標連結儲存在url:
if (status == 401) { //判断当前的路由是否是目标路由 if(router.currentRoute.name == "target"){ //跳转回login路由,并把目标路由的url路径保存在login的query中 router.replace({ name:"login", query: {redirect: router.currentRoute.fullPath} }) }else{ /* 普通401拦截直接返回到登录页面 */ router.push('/login'); } }
3.點擊登入後使用url上保存的query直接跳回目標頁
router.push({path:decodeURIComponent(url)});
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
在vue-cli webpack中如何引入jquery(詳細教學)
#以上是在vue中如何實現跳到之前頁面的詳細內容。更多資訊請關注PHP中文網其他相關文章!