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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:26:41
字體:
來源:轉載
供稿:網友

最近接手的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) })

需求

手動登出

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 兴国县| 朝阳区| 措美县| 建始县| 苏尼特左旗| 江西省| 逊克县| 偏关县| 宽甸| 女性| 阜新市| 清水河县| 思南县| 和田市| 双桥区| 竹山县| 桐梓县| 嘉祥县| 大石桥市| 同心县| 灵宝市| 原平市| 余江县| 五指山市| 平度市| 琼中| 台东县| 历史| 宜君县| 临江市| 栾城县| 阜宁县| 厦门市| 扬州市| 视频| 绥芬河市| 湖北省| 九龙城区| 鲁山县| 洪雅县| 洛扎县|