国产探花免费观看_亚洲丰满少妇自慰呻吟_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(() => {   })  }

簡單的登陸登出結束啦~

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆社县| 庐江县| 通江县| 新津县| 铁力市| 达州市| 抚顺市| 商丘市| 庄浪县| 长汀县| 依安县| 广饶县| 遂宁市| 英德市| 德兴市| 额尔古纳市| 黑水县| 新和县| 上思县| 北安市| 贡嘎县| 文山县| 淮安市| 泸州市| 富源县| 隆德县| 平顺县| 积石山| 胶州市| 丹凤县| 西乡县| 大埔区| 敦煌市| 长葛市| 闸北区| 娄底市| 呈贡县| 昌吉市| 灵璧县| 房产| 河间市|