簡體   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