【Business】 登录设计

前端

token 过期重新登录后自动发起上个请求

举个获取用户的 vip 信息的例子

描述

  1. 用户用带token的 Header 头来获取数据:/user/vip/get_info
  2. 后端返回 606, token过期
  3. 前端重新登录,并发起 /user/vip/get_info 来获取数据;(这个过程在 app 后台进行,不要显示给用户)

方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 伪代码

// reqBackup 可以也可以用 localStorage 来存储
var reqBackup;
function login(url, param) {
var data = http.fetch(url, param);
if (data.code === 200 && reqBackup.url) {
reqBackup = {};
fetchData(reqBackup.url, reqBackup.param, reqBackup.callback);
}
}

function fetchData(url, param, callback) {
var data = http.fetch(url, param);
// 606, token过期
if (data.code === 606) {
reqBackup.url = url;
reqBackup.param = param;
reqBackup.callback = callback;
login();
return;
}

if (data.code === 200) {
callback(data);
return;
}
}