登錄/退出流程

1.封裝axios

main.js

import axios from 'axios'

//創(chuàng)建axios實(shí)例
const instance = axios.create({
    baseURL:   'ur',
    timeout: 1000,
})

// 請求攔截
instance.interceptors.request.use(function (config) {
  // 在請求之前做的事
  return config
}, function (err) {
  // 在請求錯誤后做的事
  return Promise.reject(err)
});

// 響應(yīng)攔截
let myInterceptors = instance.interceptors.response.use(function (response) {
    // 2xx 范圍內(nèi)的狀態(tài)碼都會觸發(fā)該函數(shù)。
    // 對響應(yīng)數(shù)據(jù)做點(diǎn)什么
    return response;
}, function (err) {
    // 超出 2xx 范圍的狀態(tài)碼都會觸發(fā)該函數(shù)。
    // 對響應(yīng)錯誤做點(diǎn)什么
    return Promise.reject(err);
})

// 移除攔截器
instance.interceptors.response.eject(myInterceptors)

// 判斷請求方式
export function request (type, url, params) {
  if (type == 'get') {
    return get(url, params)
  } else if (type == 'post') {
    return post(url, params)
  } else if (type == 'put') {
    return put(url, params)
  }
}

// get請求
function get(url, params) {
  return instance.get(url,params)
}
// post請求
function post(url, params) {
  return instance.post(url,params)
}
// put請求
function put(url, params) {
  return instance.put(url,params)
}

2.將登錄成功之后的token,保存到客戶端的sessionStorage中

原因:為了保證項(xiàng)目中除了登錄之外的其他API接口,比須在登錄之后才能訪問,而且該token只能在當(dāng)前網(wǎng)站打開期間生效,所以要將token保存在sessionStorage中

login.vue

 mounted() {
 function login(params) {
  return request(
    'post',
    // 拼接url(這個看后端傳參需求決定是否要拼接)
    `/rqcode/query?uid=${params.uid}`,
    {id: 2, 
     uid:22}.then(res => {
        console.log(res);
        // 判斷登錄
        if(res.status !== 200) {
          return this.$message.error('登錄失敗');
        }
          this.$message.success('登錄成功');
          // 生成token
          window.sessionStorage.setItem("token",res.data.token)
          // 路由跳轉(zhuǎn)
          this.$router.push('/home')
    })
  },
  )
};
}

3.掛載路由導(dǎo)航守衛(wèi),保證只在必須登陸后才能訪問其他頁面

router.js

/ 掛載路由導(dǎo)航守衛(wèi)(寫在路由里面)
router.beforeEach((to, from, next) => {
  //判斷是否在登錄頁面
  if (to.path === "/login") return next()
  // 獲取token
  tokenStr = window.sessionStorage.getItem('token')
  //判斷是否攜帶token
  if(!tokenStr) return next('/login')
})

這篇文章是我在學(xué)習(xí)前端過程中所總結(jié)的登錄流程,如有不對的地方,望各位大佬能給出指導(dǎo)意見。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容