【问题标题】:window.location removed the token from localStoragewindow.location 从 localStorage 中删除了令牌
【发布时间】:2020-05-17 21:05:42
【问题描述】:
login(data){
    let appUrl = process.env.MIX_APP_PRO + process.env.MIX_APP_URL;
    axios.post('/api/auth/login', data)
    .then(res => {
        this.responseAfterLogin(res)
    })
    .then(dat => {
       let appUrl = '/hub';
       window.location = appUrl;
    })
    .catch(function(error){
        if(error.response){
            Exception.handle(error.response.data)
        }
    })
}
responseAfterLogin(res){
    const access_token = res.data.access_token;
        const username = res.data.user;
        if(Token.isValid(access_token)){
            AppStorage.store(username, access_token);
        }
    }
}

以上是我用来将用户登录到我的系统并将访问令牌存储到 localStorage 的功能,但是问题是当用户在成功登录令牌后被重定向时,一些如何从本地存储中删除。

请帮忙。

import Token from "./Token";

class AppStorage{
    storeToken(token){
        window.localStorage.setItem('token', token);
    }

    storeUser(user){
        window.localStorage.setItem('user', user);
    }

    store(user, token){
        this.storeToken(token);
        this.storeUser(user);
    }

    clear(){
        window.localStorage.removeItem('user');
        window.localStorage.removeItem('token');
    }

    getToken(){
        return window.localStorage.getItem('token');
    }

    getUser(){
        return window.localStorage.getItem('user');
    }

}

export default AppStorage = new AppStorage()

这是我用来在 localStorage 中存储和检索值的应用存储类。

【问题讨论】:

  • 什么是AppStorage
  • AppStorage 是我创建的用于从本地存储存储和检索值的类
  • 那么请向我们展示该课程,因为问题很可能就在那里。
  • 我已经添加了有问题的课程,请看一下。
  • 另一件事是这段代码实际上可以在我的本地主机上运行,​​但是当我上传到服务器时,它会删除 localStorage 中的值

标签: javascript vue.js redirect local-storage window.location


【解决方案1】:

伙计们,这个问题已经解决了,这是我的错误。

当我在服务器上上传网站时,我需要在安装 JWT 模块时为 JWT 密钥生成密钥,而我没有这样做。

所以用户没有正确登录,这就是身份验证不成功导致令牌从 localStorage 中删除的原因。

感谢大家的帮助。

【讨论】:

    【解决方案2】:

    LocalStorage 由 protocol://host:port 分隔,因此如果您重定向到具有不同域/子域的页面,您将无法访问您填充的本地存储

    【讨论】:

    • 从他们的代码来看,看起来他们正在重定向到同一主机内的一个 url (/hub)
    • 没有页面在同一个域中。但由于某种原因,令牌是本地存储被删除。
    • 您能否在导航之前设置断点并确保您的令牌已真正存储在浏览器中?什么时候在 AppStorage 中调用 clear 操作
    • 此代码在本地主机上运行。仅当我将其上传到服务器时才会出现此问题。
    • 有人检查过代码,看看有什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2022-10-25
    • 2018-07-26
    相关资源
    最近更新 更多