2017-06-12 3 views
0

Ich habe Web-Anwendung mit Java/J2EE entwickelt und aktivieren grundlegende Authentifizierung, es funktioniert gut. Aber es gibt ein Problem in der folgenden Situation.Relogin grundlegende Auth Popup während der Anmeldung

- Opened the same application in 2 different tabs. 
- During login i am switching/back to this applications. 
- But again it will ask for login credentials(basic authentication popup is coming) 

Nein, was verursacht dieses Problem? Jeder Vorschlag

Antwort

0

Lösung für die oben genannte Ausgabe:

Beide Anwendung enthält die gleichen JSESSIONID Schlüssel, den Konflikt wird immer, wenn ich Schale die Registerkarten. Ich löste das, indem ich den eindeutigen JSESSIONID Schlüsselname für jede Anwendung

App1 -- JSESSIONID_app1:bqkdsfasjfd79879jlkjadf 
App2 -- JSESSIONID_app2:adfkjasf8908098kj987jkl 
gab
0

Es ist ziemlich üblich sogar in einer einzelnen Seitenanwendung, dass der Benutzer mehrere Registerkarten verwenden möchte. Die oben genannte Sicherheitsvorkehrung, das Token in der sessionStorage zu speichern, wird einige schlechte UX in der Form erzeugen, dass der Benutzer aufgefordert wird, sich mit jeder von ihm geöffneten Registerkarte erneut anzumelden. Richtig, sessionStorage wird nicht über Tabs verteilt.

Die Art, wie ich es gelöst habe, ist mit LocalStorage Ereignisse. Wenn ein Benutzer einen neuen Tab öffnet, fragen wir zuerst einen anderen Tab, der geöffnet wird, wenn er bereits den sessionStorage für uns hat. Wenn eine andere Registerkarte geöffnet wird, sendet sie uns das sessionStorage-Ereignis über localStorage, das wir in sessionStorage duplizieren. Die sessionStorage-Daten bleiben nicht im LocalStorage, auch nicht für 1 Millisekunde, da sie im selben Anruf gelöscht werden. Die Daten werden über die Ereignisnutzlast und nicht über die localStorage selbst ausgetauscht.

Wenn Sie auf diesem mehr Informationen wünschen Tryout liest gerade

https://blog.guya.net/2015/06/12/sharing-sessionstorage-between-tabs-for-secure-multi-tab-authentication/

Verwandte Themen