我们的项目以前处理token过期是,后端返回一个过期的error code然后前端跳转到登录页。
A页面是一个表单页,提交成功后跳转到B页面
function request(url,data,header) {
$.ajax({
url: url,
type: 'post',
data: data,
header: header,//header中带有token
success: function(data) {
//code为1时成功
if(data.code == 1) {
window.location.href = 'B.html'
}
//code为2是 token过期
if(data.code == 2) {
window.location.href = 'login.html'
}
}
})
}
request('submitUrl',data,header)//执行提交表单
客户感觉这样交互体验太差了,想改为
当token过期时,后端返回一个过期的error code,前端判断后再发送一个更新token的请求之后在发送之前的请求,让用户不做任何操作的情况下完成流程。
function request(url,data,header) {
$.ajax({
url: url,
type: 'post',
data: data,
header: header,//header中带有token
success: function(data) {
//code为1时成功
if(data.code == 1) {
window.location.href = 'B.html'
}
//code为2是 token过期
if(data.code == 2) {
window.header.token =
requestToken(header)//怎样用这个获取的token把之前的请求再执行一次呢
}
}
})
}
request('submitUrl',data)//执行提交表单
//刷新token
function requestToken() {
$.ajax({
url: 'getToken',
data: data,
type:'post',
success: function(data) {
//code为1时成功
if(data.code == 1) {
return data.token
}
}
})
但是我被一个流程上的问题卡住了,获取了这个更新的token,我如何再把之前的请求发送呢(在不让用户操作的情况下),我这种想法是否可行?
拦截器。
发送请求时全局拦截判断 code 是否为需要刷新token。
如果是 就将会话保存,刷新token后再重发。
或者在刷新 token 接口将当前请求的 Request 一起发过去。后端直接处理,既刷新token 又处理业务并将业务结果返回。但是这样后端一般都不会干。@ω@