Ich habe eine Web-API in .net Core 1.0, die JWT-Token (access_token) bei der Anmeldung an die Clients ausgibt. Jetzt hat das Token eine kurze Ablaufzeit (10 Minuten) und der Client fordert alle 8 Minuten ein neues Token für die Kontinuität der Sitzung an. Dieses Token wird im Cookie auf der Clientseite im Browser gespeichert. Jetzt funktioniert das gut, wenn der Client in nur einem Tab des Browsers funktioniert. Wenn der Client jedoch zwei oder mehr Registerkarten öffnet, wird alle acht Minuten eine Anforderung für ein neues Token an die API gesendet. Dies führt zu mehreren Anfragen von demselben Benutzer gleichzeitig und meine Anwendung gibt Token für jede Anfrage aus, aber nur eines der Token wird auf dem clientseitigen Cookie gespeichert. Es führt jedoch zu mehreren Token, von denen nur ein einziger während seiner gesamten Lebensdauer verwendet wird.Wie kann die API nur einen Token pro Benutzer ausgeben lassen (in mehreren Tabs geöffnet)?
Ich habe versucht, die userId und das Token in der DB zu speichern und sie während der API-Anfrage zu überprüfen, aber der gleiche Benutzer in mehreren Registerkarten macht gleichzeitige Anfrage und die Logik schlägt hier fehl.
Wie kann ich diese Situation beheben? Ich möchte, dass meine API nur einen Token pro Nutzer ausgibt, der auf mehreren Tabs geöffnet ist. Jede Hilfe wird geschätzt.
Also möchten Sie, dass Ihre API für jede Benutzeranforderung ein einzelnes Token ausgibt, auch wenn sie mehrere Tabs geöffnet haben? – Shaw
Ja, für denselben Benutzer, der in mehreren Registerkarten geöffnet wurde. – saurabhadhikari
Sie müssen die Token betweeb Tabs teilen. Das Front-End sollte es wiederverwenden, wenn es verfügbar ist, oder ein neues anfordern und es den restlichen Tabs zur Verfügung stellen. Dies kann mit localStorage anstelle von cookie und events geschehen, um eine Änderung zu kommunizieren. Siehe https://stackoverflow.com/questions/20325763/browser-sessionstorage-share-between-tabs – pedrofb