我在客户端的click事件上具有以下代码,它会发送请求服务器端节点以获取令牌,然后从外部url响应返回令牌时。它将令牌传递到第二个ajax调用,以调用特定的api路由。
这一切都很好,但是我想从特定的api路由(使用令牌)获得响应后注销令牌。这样,在响应之后,我就没有令牌保持活动状态。
什么是完成此任务的好方法?我当前的解决方案是在给出特定api路由的响应时,将提取请求发送到/ tokenrequest / logout以注销令牌。但不确定这是否是正确或良好的方法。
getdata.addEventListener("click", function(e) { //simple button click to initiate api
e.preventDefault();
$.ajax({
method: "GET",
url: "/jdeapi",
error: function(request, status, error) {
console.log(error);
}
}).then(function(data) {
console.log(JSON.parse(data));
let rawData = JSON.parse(data);
var token = rawData.userInfo.token;
$.ajax({
method: "POST",
url: "/sendtojde",
data: {
token
}
}).then(function(data) {
console.log(data);
})
})
})
令牌请求的节点服务器端代码如下
router.get('/jdeapi', function(req, res) {
let url = 'https://Aisserver:port/jderest/tokenrequest';
let data = {
username: 'username',
password: 'password',
deviceName: 'riolivApp'
}
fetch(url, {
credential: 'include',
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
}).then(response => response.text())
.then(text => res.json(text));
})
然后在客户端进行第二次ajax调用后,服务器端调用如下以获取特定的api
router.post('/sendtojde', function(req, res) {
console.log(req.body.token);
let url = "https://Aisserver:port/jderest/poservice"
let data = {
token: req.body.token,
deviceName: 'riolivApp',
applicationName: "P4310",
version: "RMI0001"
}
fetch(url, {
credential: 'include',
method: 'POST',
body: JSON.stringify(data),
headers: {
'Content-Type': 'application/json'
}
}).then(response => response.text())
.then(text =>
res.json(text));
})