Попытка обработать сценарий входа в OAuth, где, если пользователь приземляется на странице с authorization_code
в строке запроса, мы обрабатываем токен и продолжаем или, если они приземляются на странице без этого, мы проверяем локальное хранилище на наличие существующего токена, убедитесь, что он по-прежнему действителен и либо перенаправлен на логин, либо продолжен, исходя из его действительности.
Проблема заключается в том, что если мы проверяем существование параметра строки запроса authorization_code
, подписка срабатывает дважды. В первый раз он пуст, второй раз он имеет правильное значение в словаре.
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 (вам нужно вывести его в новое окно и добавить строку запроса ?test=test
).
Вопросы
- Есть ли что-то, что я делаю неправильно, чтобы сделать его дважды?
- Я не могу просто игнорировать пустой объект с условным, потому что сценарий, в котором нам нужно проверить существующий токен аутентификации - есть ли другой способ приблизиться к этому, что не является полным взломом?