Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Dr.Disrespect
vue-vben-admin
提交
b6d5b079
V
vue-vben-admin
项目概览
Dr.Disrespect
/
vue-vben-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-vben-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b6d5b079
编写于
6月 17, 2021
作者:
V
Vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(axios): added authenticationScheme configuration,fix #774
上级
f6fe1dd6
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
28 addition
and
30 deletion
+28
-30
CHANGELOG.zh_CN.md
CHANGELOG.zh_CN.md
+1
-0
src/api/sys/upload.ts
src/api/sys/upload.ts
+1
-1
src/api/sys/user.ts
src/api/sys/user.ts
+1
-1
src/store/modules/user.ts
src/store/modules/user.ts
+1
-6
src/utils/http/axios/Axios.ts
src/utils/http/axios/Axios.ts
+3
-5
src/utils/http/axios/axiosCancel.ts
src/utils/http/axios/axiosCancel.ts
+0
-1
src/utils/http/axios/axiosTransform.ts
src/utils/http/axios/axiosTransform.ts
+6
-2
src/utils/http/axios/checkStatus.ts
src/utils/http/axios/checkStatus.ts
+2
-2
src/utils/http/axios/index.ts
src/utils/http/axios/index.ts
+12
-11
types/axios.d.ts
types/axios.d.ts
+1
-1
未找到文件。
CHANGELOG.zh_CN.md
浏览文件 @
b6d5b079
...
...
@@ -16,6 +16,7 @@
-
**Preview**
新增
`createImgPreview`
图片预览函数
-
**Setup**
新增引导页示例
-
**Tests**
添加 jest 测试套件,暂不支持 Vue 组件单测
-
**Axios**
新增
`authenticationScheme`
配置,用于指定认证方案
### 🐛 Bug Fixes
...
...
src/api/sys/upload.ts
浏览文件 @
b6d5b079
import
{
UploadApiResult
}
from
'
./model/uploadModel
'
;
import
{
defHttp
}
from
'
/@/utils/http/axios
'
;
import
{
UploadFileParams
}
from
'
/
@/utils/http/axios/type
s
'
;
import
{
UploadFileParams
}
from
'
/
#/axio
s
'
;
import
{
useGlobSetting
}
from
'
/@/hooks/setting
'
;
const
{
uploadUrl
=
''
}
=
useGlobSetting
();
...
...
src/api/sys/user.ts
浏览文件 @
b6d5b079
import
{
defHttp
}
from
'
/@/utils/http/axios
'
;
import
{
LoginParams
,
LoginResultModel
,
GetUserInfoModel
}
from
'
./model/userModel
'
;
import
{
ErrorMessageMode
}
from
'
/
@/utils/http/axios/type
s
'
;
import
{
ErrorMessageMode
}
from
'
/
#/axio
s
'
;
enum
Api
{
Login
=
'
/login
'
,
...
...
src/store/modules/user.ts
浏览文件 @
b6d5b079
import
type
{
UserInfo
}
from
'
/#/store
'
;
import
type
{
ErrorMessageMode
}
from
'
/@/utils/http/axios/types
'
;
import
type
{
ErrorMessageMode
}
from
'
/#/axios
'
;
import
{
defineStore
}
from
'
pinia
'
;
import
{
store
}
from
'
/@/store
'
;
import
{
RoleEnum
}
from
'
/@/enums/roleEnum
'
;
import
{
PageEnum
}
from
'
/@/enums/pageEnum
'
;
import
{
ROLES_KEY
,
TOKEN_KEY
,
USER_INFO_KEY
}
from
'
/@/enums/cacheEnum
'
;
import
{
getAuthCache
,
setAuthCache
}
from
'
/@/utils/auth
'
;
import
{
GetUserInfoModel
,
LoginParams
}
from
'
/@/api/sys/model/userModel
'
;
import
{
getUserInfo
,
loginApi
}
from
'
/@/api/sys/user
'
;
import
{
useI18n
}
from
'
/@/hooks/web/useI18n
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
import
{
router
}
from
'
/@/router
'
;
...
...
src/utils/http/axios/Axios.ts
浏览文件 @
b6d5b079
import
type
{
AxiosRequestConfig
,
AxiosInstance
,
AxiosResponse
}
from
'
axios
'
;
import
type
{
RequestOptions
,
Result
,
UploadFileParams
}
from
'
.
/type
s
'
;
import
type
{
RequestOptions
,
Result
,
UploadFileParams
}
from
'
.
./../../../types/axio
s
'
;
import
type
{
CreateAxiosOptions
}
from
'
./axiosTransform
'
;
import
axios
from
'
axios
'
;
import
qs
from
'
qs
'
;
import
{
AxiosCanceler
}
from
'
./axiosCancel
'
;
import
{
isFunction
}
from
'
/@/utils/is
'
;
import
{
cloneDeep
}
from
'
lodash-es
'
;
import
{
ContentTypeEnum
}
from
'
/@/enums/httpEnum
'
;
import
{
RequestEnum
}
from
'
../../..
/enums/httpEnum
'
;
import
{
RequestEnum
}
from
'
/@
/enums/httpEnum
'
;
export
*
from
'
./axiosTransform
'
;
...
...
@@ -93,7 +91,7 @@ export class VAxios {
!
ignoreCancel
&&
axiosCanceler
.
addPending
(
config
);
if
(
requestInterceptors
&&
isFunction
(
requestInterceptors
))
{
config
=
requestInterceptors
(
config
);
config
=
requestInterceptors
(
config
,
this
.
options
);
}
return
config
;
},
undefined
);
...
...
src/utils/http/axios/axiosCancel.ts
浏览文件 @
b6d5b079
import
type
{
AxiosRequestConfig
,
Canceler
}
from
'
axios
'
;
import
axios
from
'
axios
'
;
import
{
isFunction
}
from
'
/@/utils/is
'
;
// Used to store the identification and cancellation function of each request
...
...
src/utils/http/axios/axiosTransform.ts
浏览文件 @
b6d5b079
...
...
@@ -2,9 +2,10 @@
* Data processing class, can be configured according to the project
*/
import
type
{
AxiosRequestConfig
,
AxiosResponse
}
from
'
axios
'
;
import
type
{
RequestOptions
,
Result
}
from
'
./type
s
'
;
import
type
{
RequestOptions
,
Result
}
from
'
/#/axio
s
'
;
export
interface
CreateAxiosOptions
extends
AxiosRequestConfig
{
authenticationScheme
?:
string
;
urlPrefix
?:
string
;
transform
?:
AxiosTransform
;
requestOptions
?:
RequestOptions
;
...
...
@@ -30,7 +31,10 @@ export abstract class AxiosTransform {
/**
* @description: 请求之前的拦截器
*/
requestInterceptors
?:
(
config
:
AxiosRequestConfig
)
=>
AxiosRequestConfig
;
requestInterceptors
?:
(
config
:
AxiosRequestConfig
,
options
:
CreateAxiosOptions
)
=>
AxiosRequestConfig
;
/**
* @description: 请求之后的拦截器
...
...
src/utils/http/axios/checkStatus.ts
浏览文件 @
b6d5b079
import
type
{
ErrorMessageMode
}
from
'
./types
'
;
import
type
{
ErrorMessageMode
}
from
'
/#/axios
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
import
{
useI18n
}
from
'
/@/hooks/web/useI18n
'
;
// import router from '/@/router';
...
...
@@ -9,6 +8,7 @@ import { useUserStoreWidthOut } from '/@/store/modules/user';
const
{
createMessage
,
createErrorModal
}
=
useMessage
();
const
error
=
createMessage
.
error
!
;
export
function
checkStatus
(
status
:
number
,
msg
:
string
,
...
...
src/utils/http/axios/index.ts
浏览文件 @
b6d5b079
...
...
@@ -2,22 +2,17 @@
// The axios configuration can be changed according to the project, just change the file, other files can be left unchanged
import
type
{
AxiosResponse
}
from
'
axios
'
;
import
type
{
RequestOptions
,
Result
}
from
'
./type
s
'
;
import
type
{
RequestOptions
,
Result
}
from
'
/#/axio
s
'
;
import
type
{
AxiosTransform
,
CreateAxiosOptions
}
from
'
./axiosTransform
'
;
import
{
VAxios
}
from
'
./Axios
'
;
import
{
checkStatus
}
from
'
./checkStatus
'
;
import
{
useGlobSetting
}
from
'
/@/hooks/setting
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
import
{
RequestEnum
,
ResultEnum
,
ContentTypeEnum
}
from
'
/@/enums/httpEnum
'
;
import
{
isString
}
from
'
/@/utils/is
'
;
import
{
getToken
}
from
'
/@/utils/auth
'
;
import
{
setObjToUrlParams
,
deepMerge
}
from
'
/@/utils
'
;
import
{
useErrorLogStoreWithOut
}
from
'
/@/store/modules/errorLog
'
;
import
{
useI18n
}
from
'
/@/hooks/web/useI18n
'
;
import
{
joinTimestamp
,
formatRequestDate
}
from
'
./helper
'
;
...
...
@@ -34,14 +29,14 @@ const transform: AxiosTransform = {
*/
transformRequestHook
:
(
res
:
AxiosResponse
<
Result
>
,
options
:
RequestOptions
)
=>
{
const
{
t
}
=
useI18n
();
const
{
isTransformRe
questResult
,
isReturnNativeResponse
}
=
options
;
const
{
isTransformRe
sponse
,
isReturnNativeResponse
}
=
options
;
// 是否返回原生响应头 比如:需要获取响应头时使用该属性
if
(
isReturnNativeResponse
)
{
return
res
;
}
// 不进行任何处理,直接返回
// 用于页面代码可能需要直接获取code,data,message这些信息时开启
if
(
!
isTransformRe
questResult
)
{
if
(
!
isTransformRe
sponse
)
{
return
res
.
data
;
}
// 错误的时候返回
...
...
@@ -124,12 +119,14 @@ const transform: AxiosTransform = {
/**
* @description: 请求拦截器处理
*/
requestInterceptors
:
(
config
)
=>
{
requestInterceptors
:
(
config
,
options
)
=>
{
// 请求之前处理config
const
token
=
getToken
();
if
(
token
)
{
// jwt token
config
.
headers
.
Authorization
=
token
;
config
.
headers
.
Authorization
=
options
.
authenticationScheme
?
`
${
options
.
authenticationScheme
}
${
token
}
`
:
token
;
}
return
config
;
},
...
...
@@ -183,6 +180,10 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
return
new
VAxios
(
deepMerge
(
{
// See https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#authentication_schemes
// authentication schemes,e.g: Bearer
// authenticationScheme: 'Bearer',
authenticationScheme
:
''
,
timeout
:
10
*
1000
,
// 基础接口地址
// baseURL: globSetting.apiUrl,
...
...
@@ -200,7 +201,7 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
// 是否返回原生响应头 比如:需要获取响应头时使用该属性
isReturnNativeResponse
:
false
,
// 需要对返回数据进行处理
isTransformRe
questResult
:
true
,
isTransformRe
sponse
:
true
,
// post请求的时候添加参数到url
joinParamsToUrl
:
false
,
// 格式化提交参数时间
...
...
src/utils/http/axios/types
.ts
→
types/axios.d
.ts
浏览文件 @
b6d5b079
...
...
@@ -6,7 +6,7 @@ export interface RequestOptions {
// Format request parameter time
formatDate
?:
boolean
;
// Whether to process the request result
isTransformRe
questResult
?:
boolean
;
isTransformRe
sponse
?:
boolean
;
// 是否返回原生响应头 比如:需要获取响应头时使用该属性
isReturnNativeResponse
?:
boolean
;
// Whether to join url
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录