用localStorage反应身份验证

问题描述

下面的代码可用于登录,但是起初我一直遇到未定义的错误,我认为这可能是一切的时间安排,本地存储setItem花费的时间太长,试图设置延迟但没有进行管理。 / p>

    async function login(username,password) {
         const response = await axios.post(API_URL + "signin",{
            username,password
          });
    
          if (response.data.accessToken && typeof window !== 'undefined') {
            localStorage.setItem("user",JSON.stringify(response.data));
         }
          
        return response.data;
 }

解决方法

如果可以使用,您可以尝试一下吗?

    async login(username,password) {
        axios.post(API_URL + "signin",{
            username,password
        })
            .then(response => {
                if (response.data.accessToken && typeof window !== 'undefined') {
                    localStorage.setItem("user",JSON.stringify(response.data));
                }
            })
        return response.data;
    }
,

很难确切地说没有看到您收到的确切错误,但是由于问题而跳出来的是response.data.accessToken,因为如果您尝试访问{{1}的accessToken属性} data为null或未定义时,将导致错误。

我的建议是在访问data属性之前,添加一个检查以确保response.data是真实的。例如,

accessToken

还有其他方法可以解决此常见问题,例如lodash的if(response.data && response.data.accessToken && ...) { 方法或可选链接。

,

问题是我正在加载用户名的地方,还没有设置本地存储,所以系统以undefined响应,要解决问题,只需设置一条if语句,告诉蟾蜍usersDetails可用

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...