login state with signInWithCustomToken shared with browser tabs
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- angular, firebase, typescript
- Bereich
- authentication
Rechercherichtung
Beginne mit den FireService-Methoden login und loginAsPublicUser, insbesondere mit ihren Aufrufen von angularFireAuth.signInWithCustomToken und signOut. Prüfe die AngularFire-Einstiegspunkte für die Authentifizierung und das Persistenzverhalten des Browsers, um festzustellen, ob ein separater Tab-Status unterstützt wird. Als erledigt gilt die Aufgabe, wenn Sitzungen des Kontoinhabers und des öffentlichen Benutzers über Tabs hinweg isoliert bleiben, ohne den Autorisierungsstatus des jeweils anderen zu überschreiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hi
I have an application built with angular fire.
How can I not share login state among tabs in a same browser ?
Application overview
I have a class 'FireService' to login with custom token.
And application let users to login two ways 'as account owner' or 'as public user'.
And if an account owner logins, FireService#login method will be called.
And if a public user logins, FireService#loginAsPublicUser method will be called.
Issue
With same browser but different tab, login as an account owner in a tab 'A' and login as a public user in a tab 'B', the login state was overridden with the public users's and he gets an error due to insufficient permission of firebase rules. Because the owner was trying to access as the public user and blocked by my firebase rules.
I checked the browsers log, after the account owner's stats was overridden, the authorization headers value to start session with firestore was the public user's not the account ownser's.
How can I use login state separately for users different tabs in a same browser?
curl 'https://firestore.googleapis.com/google.firestore.v1.Firestore/Listen/channel?VER=8&database=projects%2{project name}%2Fdatabases%2F(default)&RID=*****&CVER=*****X-HTTP-Session-Id=gsessionid&zx=*****&t=1' \
~~~
-H 'x-client-data: CJ2EywE=' \
--data-raw 'headers=*****Authorization%3ABearer%20eyJhbGciOiJSU*****'
@Injectable()
export class FireService {
~~~~
public async login(roomId?: string): Promise<void> {
if (roomId) {
this.roomId = roomId;
}
const res = await this.serverClient
.getFirebaseToken(this.roomId)
.toPromise();
this.accountId = this.serverClient.getAccountId();
try {
await this.angularFireAuth.signInWithCustomToken(res.firebaseToken);
this.startTokenRefresh(true);
this.loggedIn = true;
} catch (error) {
console.error(error);
}
}
public async loginAsPublicUser(
participantId: string,
sharedRoomId: string,
password: string
): Promise<void> {
this.participantId = participantId;
this.sharedRoomId = sharedRoomId;
this.password = password;
const res = await this.serverClient
.getPublicFirebaseToken(
this.participantId,
this.sharedRoomId,
this.password
)
.toPromise();
try {
await this.angularFireAuth.signOut();
await this.angularFireAuth.signInWithCustomToken(res.firebaseToken);
this.startTokenRefresh(true);
this.loggedIn = true;
} catch (error) {
console.error(error);
}
}
- Vorherrschende Sprache
- TypeScript
- Sterne
- 7.8k
- Forks
- 2.2k
- Ø Merge
- 3 T. 6 Std.
- Gemergte PRs (30 T.)
- 5
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus angular/angularfire
-
comp: build/pipeline type: bug version: current (v17+)
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
angular/angularfire#3766 ·
-
comp: schematics type: bug version: current (v17+)
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 76/100
angular/angularfire#3768 ·
-
comp: docs type: chore version: current (v17+)
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 58/100
angular/angularfire#3764 ·
-
comp: firestore comp: ssr priority: P0 (critical) type: feature version: current (v17+)
angular/angularfire#3757 · 1 zugewiesene Person ·
-
Six `firebase` entry points have no `@angular/fire` equivalent, so their exports are unreachable Offencomp: core type: feature
angular/angularfire#3755 · 1 zugewiesene Person ·
Alle Issues in angular/angularfire
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
area:workflow bug ready-for-agent
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
fil-donadoni/tolaria#4409 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Fission-AI/OpenSpec#1960 ·
-
Add dependabot Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
corsairdev/corsair#1764 ·