国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue實現登陸登出的實現示例

2019-11-19 15:26:03
字體:
來源:轉載
供稿:網友

最近接手的B端項目選擇了vue來做,此項目使用element ui Message等為組件 望周知

需求

  • 登陸成功后跳轉至首頁
  • 首頁不能手動跳轉至登陸頁
  • 登陸后跳轉至目標頁面

此次B端SPA項目把ak存在localstorage中

1.登陸的跳轉利用全局鉤子router.beforeEach

//router.jsrouter.beforeEach((to, from, next) => { // 若userkey不存在并且前往頁面不是登陸頁面,進入登陸 // 若userkey存在并且前往登陸頁面,進入主頁 const userKey = localStorage.getItem('userKey') if (!userKey && to.path !== '/login') {  next({   path: '/login',   query: { redirect: to.fullPath }  }) } else if (userKey && to.path === '/login') {  next({ path: '/' }) } else {  next() }})

上面使用了query帶上目標參數

例子:#/login?redirect=%2Fapp

在登陸提交處還得對redirect參數進行處理

//若驗證成功跳轉 var redirect = decodeURIComponent(this.$route.query.redirect || '/')     self.$router.push({      // 你需要接受路由的參數再跳轉      path: redirect     })

需求

若ak失效后發送請求時彈出失效彈出框返回到登陸頁面

以下做了個簡單的例子若請求返回的參數帶0則登陸失效

// respone攔截器axios.interceptors.response.use( response => {  console.log(response)  const data = response.data  if (data.status === 0) {   MessageBox.alert('你已被登出,可以取消繼續留在該頁面,或者重新登錄', '確定登出', {    confirmButtonText: '確定',    type: 'warning'   }).then(() => {    localStorage.clear()    router.replace({     path: '/login'    })    return   }).catch(() => {    localStorage.clear()    router.replace({     path: '/login'    })   })  } else {   return response  } }, error => {  if (error && error.response) {   switch (error.response.status) {    case 400:     error.message = '請求錯誤'     break    case 401:     error.message = '未授權,請登錄'     break    case 403:     error.message = '拒絕訪問'     break    case 404:     error.message = (process.env.NODE_ENV === 'production' ? `請求地址出錯` : `請求地址出錯: ${error.response.config.url}`)     break    case 408:     error.message = '請求超時'     break    case 500:     error.message = '服務器內部錯誤'     break    case 501:     error.message = '服務未實現'     break    case 502:     error.message = '網關錯誤'     break    case 503:     error.message = '服務不可用'     break    case 504:     error.message = '網關超時'     break    case 505:     error.message = 'HTTP版本不受支持'     break    default:   }   Message({    message: error.message,    type: 'error',    duration: 5 * 1000   })  }  return Promise.reject(error) })

需求

手動登出

 loginOut() {   var self = this   this.$confirm('您確定要退出嗎?', '退出管理平臺', {    confirmButtonText: '確定',    cancelButtonText: '取消'   }).then(() => {    const info = {     'userkey': localStorage.getItem('userKey')    }    self.$store.dispatch('LogOut', info).then(() => {     self.$router.push({ path: '/login' })    }).catch(() => {    })   }).catch(() => {   })  }

簡單的登陸登出結束啦~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 横峰县| 靖江市| 夏河县| 平原县| 定陶县| 贵州省| 台湾省| 尚志市| 唐海县| 永济市| 涡阳县| 随州市| 托克逊县| 胶南市| 桂阳县| 永顺县| 平和县| 临朐县| 云南省| 义乌市| 鹿泉市| 水城县| 宁河县| 永州市| 冕宁县| 河东区| 昌邑市| 砚山县| 奈曼旗| 通州市| 大余县| 福清市| 盐城市| 紫云| 阳原县| 丰原市| 张掖市| 广东省| 聊城市| 峡江县| 福安市|