繁体   English   中英

如何检查用户身份验证是否未定义令牌

[英]How to check if token is undefined for user authentication

如果输入正确的密码,我可以登录用户,但是当我输入错误的密码时,它显示“access_token”未定义。

这是我的 useToken.js 文件

import { useState } from "react";

export default function useToken() {

  const getToken = () => {
    const tokenString = sessionStorage.getItem("access_token");
    const userToken = JSON.parse(tokenString);
    return userToken?.access_token;
  };

  const [token, setToken] = useState(getToken());

  const saveToken = userToken => {
    sessionStorage.setItem('access_token', JSON.stringify(userToken.data));
    setToken(userToken.data.access_token);
  };

  return {
    setToken: saveToken,
    token
  }

}

这是在我的 Login.js 文件中处理这个提交

    const handleSubmit = async e => {
        e.preventDefault();
        const token = await loginUser({
          email,
          password
        });
        setToken(token);
      }

最后在我的 App.js 文件中,我通过以下方式显示登录页面:

  if (!token) {
    return <Login setToken={setToken} />
  }

如果他们输入错误的密码或用户名重定向到登录页面,我如何检查未定义。

首先,看看这个答案 一旦设法为 isUndefined 编写逻辑,就将其嵌入一个三元运算符,例如:

{ isUndefined ?
    // do these if true
    :
    // do these if false
}

错误是“cannot read access_token of undefined”,这意味着 userToken.data 是未定义的。 这很可能是因为密码错误。 使用以下。

userToken?.data?.access_token

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM