import axios from 'axios' import Cookie from 'js-cookie' // 跨域认证信息 header 名 const xsrfHeaderName = 'Authorization' axios.defaults.timeout = 5000 axios.defaults.withCredentials= true axios.defaults.xsrfHeaderName= xsrfHeaderName axios.defaults.xsrfCookieName= xsrfHeaderName // 认证类型 const AUTH_TYPE = { BEARER: 'Bearer', BASIC: 'basic', AUTH1: 'auth1', AUTH2: 'auth2', } // http method const METHOD = { GET: 'get', POST: 'post' } /** * axios请求 * @param url 请求地址 * @param method {METHOD} http method * @param params 请求参数 * @returns {Promise>} */ async function request(url, method, params) { switch (method) { case METHOD.GET: return axios.get(url, {params}) case METHOD.POST: return axios.post(url, params) default: return axios.get(url, {params}) } } /** * 设置认证信息 * @param auth {Object} * @param authType {AUTH_TYPE} 认证类型,默认:{AUTH_TYPE.BEARER} */ function setAuthorization(auth, authType = AUTH_TYPE.BEARER) { switch (authType) { case AUTH_TYPE.BEARER: Cookie.set(xsrfHeaderName, 'Bearer ' + auth.token, {expires: auth.expireAt}) break case AUTH_TYPE.BASIC: case AUTH_TYPE.AUTH1: case AUTH_TYPE.AUTH2: default: break } } /** * 移出认证信息 * @param authType {AUTH_TYPE} 认证类型 */ function removeAuthorization(authType = AUTH_TYPE.BEARER) { switch (authType) { case AUTH_TYPE.BEARER: Cookie.remove(xsrfHeaderName) break case AUTH_TYPE.BASIC: case AUTH_TYPE.AUTH1: case AUTH_TYPE.AUTH2: default: break } } /** * 检查认证信息 * @param authType * @returns {boolean} */ function checkAuthorization(authType = AUTH_TYPE.BEARER) { switch (authType) { case AUTH_TYPE.BEARER: if (Cookie.get(xsrfHeaderName)) { return true } break case AUTH_TYPE.BASIC: case AUTH_TYPE.AUTH1: case AUTH_TYPE.AUTH2: default: break } return false } export { METHOD, AUTH_TYPE, request, setAuthorization, removeAuthorization, checkAuthorization }