You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.1 KiB
107 lines
2.1 KiB
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<AxiosResponse<T>>} |
|
*/ |
|
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 |
|
}
|
|
|