如何解决登录时强制退出
我是使用这个框架的新手,所以请耐心等待。
我尝试按照身份验证提供程序中的文档 (3.12.1) 进行操作,并且能够从我的后端对用户进行身份验证。
然而,这段代码
logout: () => {
localStorage.removeItem("auth");
return Promise.resolve();
},
这是我的代码...
authProvider.js
const authProvider = {
logout: () => {
localStorage.removeItem("auth");
return Promise.resolve();
},login: ({ username,password }) => {
const request = new Request("http://localhost:3000/api/auth",{
method: "POST",body: JSON.stringify({ username,password }),headers: new Headers({ "Content-Type": "application/json" }),});
return fetch(request)
.then((response) => {
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
return Promise.resolve();
})
.then((auth) => {
localStorage.setItem("auth",JSON.stringify(auth));
})
.catch(() => {
throw new Error("Network error");
});
},checkerror: ({ status }) => {
if (status === 401 || status === 403) {
localStorage.removeItem("username");
return Promise.reject();
}
return Promise.resolve();
},checkAuth: () => {
localStorage.removeItem("username");
return localStorage.getItem("username")
? Promise.resolve()
: Promise.reject();
},getPermissions: () => Promise.resolve(),};
export default authProvider;
我从服务器得到的响应
{
"success": true,"message": "Successfully Logged In!","userData": {
"user_id": "601d25ca48305c2ef1e6a42c","firstName": "test","lastName": "test","username": "test@mail.com","token": "eyJhbGciOiJIUzI1NiJ9.NjAxZDI1Y2E0ODMwNWMyZWYxZTZhNDJj.WvYB9-H2kVTtCvRB4YumJe17EIIb0Kiz2t8h1g-IcwY"
}
}
解决方法
好吧,据我所知 - 您的 checkAuth
函数将始终拒绝 Promise,它会自动重定向到 logout
。
为什么要在 localStorage 中设置 auth
,然后在 checkAuth 上搜索 username
(尽管您一开始总是将其删除)?
你应该同步这两个功能,应该很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。