Próbujesz obsłużyć scenariusz logowania OAuth, w przypadku gdy użytkownik znajdzie się na stronie z authorization_code
w ciągu zapytania, przetwarzamy token i kontynuujemy lub, jeśli znajdą się na stronie bez tego, my sprawdź pamięć lokalną pod kątem istniejącego tokena, upewnij się, że jest nadal poprawny i przekieruj do logowania lub kontynuuj, na podstawie jego ważności.Subskrypcje subskrypcji Angular2 Query Dwa razy
Problem polega na tym, że gdy sprawdzamy istnienie parametru ciągu zapytań o wartości authorization_code
, subskrypcja jest uruchamiana dwa razy. Za pierwszym razem, gdy jest pusty, po raz drugi ma poprawną wartość w słowniku.
app.component.ts
export class App implements OnInit {
constructor(private _router: ActivatedRoute) {
}
public ngOnInit(): void {
console.log('INIT');
this._route.queryParams.subscribe(params => {
console.log(params);
});
}
}
Plunker (trzeba ją wysunąć do nowego okna i dodać ciąg kwerendy ?test=test
).
Pytania
- Czy coś robię źle, aby zwolnić dwa razy?
- Nie mogę po prostu zignorować pustego obiektu warunkowo, ponieważ jest to scenariusz, w którym musimy zweryfikować istniejący token autoryzacji - czy jest inny sposób podejścia, który nie jest kompletnym hackerem?
Ciekawym skręcają ... kiedy jest dostarczany bez znaków zapytania, subskrypcja odpala tylko raz. – lukiffer
Przetestowałem to jako [https://embed.plnkr.co/XgCauzZdTSqqokCdFWCi/?test=test](https://embed.plnkr.co/XgCauzZdTSqqokCdFWCi/?test=test) i nie wydarzyło się nic nieoczekiwanego! –
@A_Singh testujesz niewłaściwy adres URL, aby uzyskać tylko pierwszą pustą wartość – yurzui