Neuer Titel: Berechnen und aktualisieren Sie die verbleibende Ablaufzeit eines Tokens
P粉463840170
P粉463840170 2023-08-26 23:13:42
0
1
536
<p>Ich muss das Spotify-Token jede Stunde in der React-Anwendung aktualisieren (Spotify-Token ist 1 Stunde lang gültig). Ich weiß, dass die folgende Methode den Hook <strong>useEffect</strong> und den Hook <strong>setInteral</strong></p> verwendet. <pre class="brush:php;toolbar:false;">useEffect(() => { const Interval = setInterval(() => { //API-Logik aufrufen }, 3600); return () => clearInterval(interval); }, [Benutzer])</pre> <p>Aber wenn die App geschlossen und erneut geöffnet wird, stellt sie erneut eine neue Anfrage zum Abrufen des Tokens (obwohl das alte Token noch gültig ist). Ich versuche also, eine Funktionalität zu implementieren, die einen API-Aufruf erfordert, um basierend auf der verbleibenden Ablaufzeit ein neues Token zu erhalten. So implementieren Sie diese Funktion. </p> <p>Ich habe außerdem eine Funktion erstellt, die die verbleibende Ablaufzeit nach der verstrichenen Zeit berechnet</p> <pre class="brush:php;toolbar:false;">export const berechneRemainingExpirationTime = expirationTime => const currentTime = new Date().getTime(); const newExpirationTime = neues Datum(expirationTime).getTime() const previousTime = newExpirationTime – currentTime return previousTime; //in Millisekunden };</pre> <p>Wenn die Seite also neu geladen wird, muss ich die verbleibende Ablaufzeit berechnen und dann die API basierend auf dieser Zeit aufrufen und dann die API alle 1 Stunde aufrufen, um ein neues Token zu erhalten. </p> <p><strong>Ich muss die folgenden Funktionen implementieren</strong></p> <ol> <li>Wenn die Seite neu geladen wird, berechnen Sie die verbleibende Zeit und rufen Sie die API basierend auf der verbleibenden Zeit auf</li> <li>API stündlich aufrufen</li> </ol><p><br /></p>
P粉463840170
P粉463840170

Antworte allen(1)
P粉805535434

你需要将过期时间持久化到localStorage或使用Redux-persist来保存

//此间隔仅在用户未关闭应用程序时执行
useEffect(() => {
  const interval = setInterval(() => {
    //调用api逻辑
    //将过期时间写入本地存储
     localStorage.setItem("expir",value)
  }, 3600);
  return () => clearInterval(interval); 
}, [user])
//获取在本地存储中写入/存储的过期时间

 React.useEffect(() => {
    let mounted = true;
    const getToken = () => {
      if (mounted) {
        const expirationtime = localStorage.getItem("expir");
        if (new Date() > new Date(Number(expirationtime))) {
          // 过期,获取新的令牌
        } else {
          // 存在的令牌
        }
      }
    };
    getToken();
    return () => {
      mounted = false;
    };
  }, [user]);
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!