[英]How to log user out with Axios using authorization bearer + token
我有一个应用程序,我通过连接到后端(使用 axios)并获取存储在 localStorage 中的 JWT 令牌来登录用户。 我的问题来自注销功能。 我目前这样做:
async endAuth(context) {
try {
await axios.post("auth/logout", {
headers: {
Authorization:
"Bearer " + JSON.parse(localStorage.getItem("currentUser")).token,
},
});
localStorage.clear();
context.commit("setUser", {
token: null,
userId: null,
});
} catch (e) {
const error = new Error("Something went wrong");
throw error;
}
}
这不起作用。 与 API 的连接已建立,但我从后端收到 401 错误, {success: false, message: 'Expired or Invalid Token'}
现在我尝试将"Content-Type": "application/json",
到标题中仍然没有运气。
我还更改了我的代码以在fetch()
API 中使用 JavaScript 构建。 这有效! 这是代码:
async endAuth(context) {
let url = baseURL + "/auth/logout";
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization:
"Bearer " + JSON.parse(localStorage.getItem("currentUser")).token,
},
});
const responseData = await response.json();
if (!response.ok) {
const error = new Error(
responseData.message || "Failed to authenticate. Check your login data."
);
throw error;
} else {
localStorage.clear();
context.commit("setUser", {
token: null,
userId: null,
});
}
}
我还尝试通过axios.defaults.headers.common["Authorization"] = "Bearer " + localStorage.getItem("currentUser").token;
设置 axios 标头axios.defaults.headers.common["Authorization"] = "Bearer " + localStorage.getItem("currentUser").token;
- 不走运 我是否在 axios 请求中遗漏了什么?
一般的简短解决方案:
// previus logout
this.$axios.setHeader('Authorization', `Bearer ${localStorage.getItem("token")}`);
// after logout
this.$axios.setHeader('Authorization', null)
具体长解(问题):
async endAuth(context) {
try {
this.$axios.setHeader('Authorization', `Bearer ${JSON.parse(localStorage.getItem("currentUser")).token}`);
await axios.post("auth/logout");
localStorage.clear();
context.commit("setUser", {
token: null,
userId: null,
});
this.$axios.setHeader('Authorization', null)
} catch (e) {
const error = new Error("Something went wrong");
throw error;
}
}
这只是用nuxt发生在我身上,我希望其他人有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.