微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

登录时强制退出

如何解决登录时强制退出

我是使用这个框架的新手,所以请耐心等待。

我尝试按照身份验证提供程序中的文档 (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"
  }
}

screenshot

解决方法

好吧,据我所知 - 您的 checkAuth 函数将始终拒绝 Promise,它会自动重定向到 logout

为什么要在 localStorage 中设置 auth,然后在 checkAuth 上搜索 username(尽管您一开始总是将其删除)?

你应该同步这两个功能,应该很好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。