1.开发环境 vue+axios+typescript
2.电脑系统 windows10专业版
3.在开发的过程中,咱们在做登录的时候会被要求应用token进行登录,上面我来分享一下应用办法(只是简略的封装),心愿对你有所帮忙。
4.在src目录下新建

4-1.chenhttp.js代码如下:

import axios from 'axios'import qs from "qs"// 环境的切换if (process.env.NODE_ENV === 'development') {  // axios.defaults.baseURL = '/api';  axios.defaults.baseURL = '/api';} else if (process.env.NODE_ENV === 'debug') {  axios.defaults.baseURL = ''} else if (process.env.NODE_ENV === 'production') {  axios.defaults.baseURL = ''}axios.defaults.timeout = 10000;axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8;multipart/form-data';// 增加申请拦截器,在申请头中加tokenaxios.interceptors.request.use(  config => {    if (localStorage.getItem('Cusertoken')) {      config.headers.Ctoken = localStorage.getItem('Cusertoken');    }    return config;  },  error => {    return Promise.reject(error);  });// 封装axios的post申请const post = (url, params) => { return new Promise((resolve, reject) => {  axios   .post(url, qs.stringify(params))   .then(response => {    resolve(response.data);   })   .catch(error => {    reject(error);   }); });};// 封装axios的put申请const put = (url, params) => { return new Promise((resolve, reject) => {  axios   .put(url, params)   .then(response => {    resolve(response.data);   })   .catch(error => {    reject(error);   }); });};// 封装axios的delete申请const del = (url, params) => { return new Promise((resolve, reject) => {  axios   .delete(url, params)   .then(response => {    resolve(response.data);   })   .catch(error => {    reject(error);   }); });};const get = (url, query) => { return axios.get(url, query);};const $axios = { post: post, get: get, put: put, delete: del};export default $axios;

4-2.chenapi.js对立接口治理,小伙伴们依据本人的需要进行批改,代码如下:

import $axios from '@/chenhttp/chenhttp'// chenl 是传的参数export function login(chenl){ return $axios.post('/login',chenl);}

5.在store文件夹下index.js(就是vuex)中增加如下代码:

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({  state: {    usertoken:localStorage.getItem("Cusertoken")?localStorage.getItem("Cusertoken"):"",  },  mutations: {    changeLogin(state,user){      state.usertoken=user;      localStorage.setItem("Cusertoken",user);    }  },  actions: {  },  modules: {  }})

6.在router.js中增加如下代码:

router.beforeEach((to, from, next) => {  // 如果用户拜访的是登录页面 间接放行  if (to.path === '/login') return next();  // 从localStorage中失去token  const token = localStorage.getItem('Cusertoken');  // 如果没有token值 那么就跳转到'/login  if (!token) return next('/login');  // 如果有token则放行  next();})

7.在login.js中增加如下代码:

import {login} from '@/chenhttp/chenapi';
login(){      enum Cobj{        nn="90",      }      login(Cobj).then(res=>{        console.log(res);        console.log(res.CHtoken);        (this as any).LoginObj.usertoken=res.CHtoken;        (this as any).$store.commit("changeLogin",res.CHtoken);        (this as any).$router.push('/index');      })    }
成果如下:



8.本期的分享到了这里完结啦(只是简略的封装,前期还会更新),心愿对你有所帮忙,让咱们一起致力走向巅峰。