我需要让令牌来访问我的代码中的公告内容。但我所做的是复制loginUser()生成的令牌并将其粘贴到fetch下的getAnnouncement()中。我写了授权:' Bearer esuigiugeguigiguigi' < ---这是令牌。这个问题是我需要在每次过期时再次复制和粘贴令牌。
function loginUser(){
fetch('http://sample_website.com/api/auth/login', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
email: document.getElementById("email").value,
password: document.getElementById("password").value
})
})
.then(data => data.json() )
.then(data => {
if(data.response){
redirect: window.location.replace("../Sample/Home.html")
} else{
alert("Invalid Email or Password");
}
})
.catch((err) => {
console.error(err);
})
}
function getAnnouncement(){
fetch('http://sample_website.com/api/announcements', {
method: 'GET',
headers: {'Content-Type': 'application/json',
Authorization : 'Bearer esuigiugeguigiguigi'},
})
.then(data => data.json())
.then(data => { console.log(data)
const output = document.getElementById("display");
output.innerHTML = `<ul>
<li><h2>${data.data.data[0].title}</h2></li>
<li>${data.data.data[0].body}</li>
<li>Created: ${data.data.data[0].created_at}</li>
</ul>`;
})
.catch((err) => {
console.error(err);
})
}
答案 0 :(得分:1)
通常,API调用获取令牌的响应将保持:
处理此问题的一种基本方法是将令牌数据保存在localStorage或内存中(或者您自己决定),然后在需要授权的任何请求上使用它。
有问题的API可能会在令牌过期时发出特定错误。然后,您可以捕获它,使用链接刷新令牌以获取新令牌,然后重复请求。
由于手头没有太多关于API的信息,或者您正在做什么以及您正在使用什么(如果有)框架,这是我目前可以提供的最佳答案。有许多库已经在处理这些东西,所以你可能也想查看现有的解决方案。