Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mt-education-mobile
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王旭
mt-education-mobile
Commits
b22422a0
Commit
b22422a0
authored
Dec 11, 2020
by
zhangyichen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
封装登录接口信息
parent
931f5757
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
143 additions
and
3 deletions
+143
-3
test.js
src/api/test.js
+4
-3
requestLogin.js
src/utils/requestLogin.js
+139
-0
No files found.
src/api/test.js
View file @
b22422a0
import
axios
from
'@/utils/request'
import
axiosLogin
from
'@/utils/requestLogin'
import
axiosIns
from
'axios'
const
api
=
{
...
...
@@ -85,7 +86,7 @@ export function test(params) {
}
export
function
getToken
(
params
)
{
return
axios
({
return
axios
Login
({
baseURL
:
''
,
url
:
process
.
env
.
VUE_APP_BASE_API2
+
api
.
getToken
,
method
:
'get'
,
...
...
@@ -94,7 +95,7 @@ export function getToken(params) {
}
export
function
getUserId
()
{
return
axios
({
return
axios
Login
({
baseURL
:
''
,
url
:
process
.
env
.
VUE_APP_BASE_API2
+
api
.
getUserId
,
method
:
'get'
...
...
@@ -578,7 +579,7 @@ export function onlyFindBase(data) {
})
}
export
function
getAllRole
(
data
)
{
return
axios
({
return
axios
Login
({
url
:
''
+
api
.
getAllRole
,
method
:
'get'
,
params
:
data
...
...
src/utils/requestLogin.js
0 → 100644
View file @
b22422a0
import
axios
from
'axios'
// import {Toast} from 'vant'
import
Vue
from
'vue'
// import store from '@/store'
const
formData
=
function
(
data
)
{
const
_formData
=
new
FormData
()
for
(
var
i
in
data
)
{
_formData
.
append
(
i
,
data
[
i
])
}
return
_formData
},
// create an axios instance
service
=
axios
.
create
({
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout
:
5000
,
// request timeout
headers
:
{
'clientType'
:
'app'
}
})
let
refreshTokenState
=
false
,
user
=
{
id
:
''
,
corpId
:
''
,
curriculumImg
:
require
(
'@assets/images/curriculumImg.png'
),
TrainImg
:
require
(
'@assets/images/TrainImg.png'
)
},
reloadRequests
=
[]
// 刷新token的请求方法
function
getRefreshToken
()
{
const
params
=
{
refresh_token
:
localStorage
.
getItem
(
'task_refreshToken'
)
}
refreshTokenState
=
true
// 注意!!!!!!!!最终生产环境,此处url的配置
return
service
.
get
(
process
.
env
.
VUE_APP_BASE_API2
+
'/api/refresh/token'
,
{
params
,
baseURL
:
''
})
}
// request interceptor
service
.
interceptors
.
request
.
use
(
config
=>
{
const
accessToken
=
localStorage
.
getItem
(
'task_accessToken'
)
if
(
accessToken
)
{
config
.
headers
[
'Authorization'
]
=
'Bearer '
+
accessToken
}
if
(
config
.
method
===
'post'
&&
config
.
data
)
{
config
.
data
[
'userId'
]
=
sessionStorage
.
getItem
(
'userId'
)
||
user
.
id
config
.
data
[
'corpId'
]
=
sessionStorage
.
getItem
(
'corpId'
)
||
user
.
corpId
}
else
if
(
config
.
params
)
{
config
.
params
.
userId
=
sessionStorage
.
getItem
(
'userId'
)
||
user
.
id
config
.
params
.
corpId
=
sessionStorage
.
getItem
(
'corpId'
)
||
user
.
corpId
}
/* 外部分享课程处理 */
if
(
window
.
location
.
href
.
indexOf
(
'CourseTrainOut'
)
>
-
1
)
{
if
(
config
.
method
===
'post'
)
{
config
.
data
[
'isExternalShare'
]
=
'1'
config
.
data
[
'corpId'
]
=
''
config
.
data
[
'userId'
]
=
''
}
else
{
config
.
params
[
'isExternalShare'
]
=
'1'
config
.
params
[
'userId'
]
=
''
config
.
params
[
'corpId'
]
=
''
}
config
.
headers
[
'Authorization'
]
=
''
}
/* 外部分享课程处理完 */
if
(
config
.
method
===
'post'
)
{
config
.
data
=
formData
(
config
.
data
)
}
return
config
},
error
=>
{
// do something with request error
console
.
log
(
error
)
// for debug
return
Promise
.
reject
(
error
)
}
)
// response interceptor
service
.
interceptors
.
response
.
use
(
response
=>
{
const
res
=
response
.
data
if
(
res
.
code
&&
res
.
code
!==
'M0000'
&&
res
.
code
!==
200
)
{
const
resConfig
=
response
.
config
// 如果 accessToken过期
// 暂时不判断refreshTokenState 刷新token状态,以避免某些请求在“刷新token”期间因为token过期而不再发出请求;
// 现在的问题在于,当token过期时,此时发出的请求都会各子去发出“刷新token”的请求
if
((
res
.
code
===
'G_T_001'
||
res
.
code
===
'O_T_001'
))
{
// 刷新重新获取accessToken
return
getRefreshToken
().
then
((
res2
)
=>
{
// refreshTokenState = false
console
.
log
(
'refresh:'
,
res2
)
res2
=
res2
.
data
if
(
res2
.
code
===
'M0000'
)
{
// 两个token 获取成功,继续完成被拦截的请求(因为该请求因token过期被拦截)
localStorage
.
setItem
(
'task_accessToken'
,
res2
.
data
.
access_token
)
localStorage
.
setItem
(
'task_refreshToken'
,
res2
.
data
.
refresh_token
)
resConfig
.
headers
[
'Authorization'
]
=
'Bearer '
+
res2
.
data
.
access_token
resConfig
.
url
=
resConfig
.
url
.
indexOf
(
'/api/education/v1'
)
>
-
1
?
resConfig
.
url
.
split
(
'/api/education/v1'
)[
1
]
:
resConfig
.
url
return
service
(
resConfig
)
}
else
{
alert
(
'token过期且重新获取失败,请稍后重试!'
)
}
})
}
else
{
// alert(res.message || res.msg)
console
.
log
(
res
)
console
.
log
(
res
.
message
||
res
.
msg
)
}
return
Promise
.
reject
(
res
)
}
else
{
// 请求拦截 判断课程封面是否为空,添加默认图片
if
(
res
.
code
===
200
&&
res
.
data
.
rows
)
{
res
.
data
.
rows
.
map
((
list
)
=>
{
if
(
list
.
defaultUrl
===
''
)
{
if
(
list
.
lessonType
===
'0'
)
{
list
.
defaultUrl
=
user
.
curriculumImg
}
else
if
(
list
.
lessonType
===
'1'
)
{
list
.
defaultUrl
=
user
.
TrainImg
}
}
})
}
return
response
}
},
error
=>
{
console
.
log
(
'err'
+
error
)
// for debug
if
(
!
navigator
.
onLine
||
error
===
'Network Error'
)
{
alert
(
'网络异常,请检查网络'
)
}
return
Promise
.
reject
(
error
)
}
)
export
default
service
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment