私は現在、ActivatedRouteのqueryParamsにいくつか問題があります。私はqueryParams = "?token = 1234"で任意のURLを呼び出すことができるシステムを実現しようとしています。このパラメータが提供されている場合、AppComponentはこのトークンを使用してユーザーを認証します。angular2:queryParams onInit
これは、ユーザーが別のアプリケーション内で認証され、トークンを受け取って角度アプリケーションに転送するためです。
だから、私のAppComponentに、私は次のコードを持っている:
ngOnInit() {
this._route.queryParams.subscribe(queryParams => {
if (queryParams['token'] != null) {
let data;
this._staffService.getStaffFromToken(queryParams['token']).subscribe(
(response: any) => data = response,
(error: Error) => console.error(error),
() => {
if (data.token != null) {
this._staffService.setLoggedInStaff(data.staff);
this.processLogin();
} else {
this._router.navigateByUrl('/login');
}
}
);
} else {
if (this._staffService.getLoggedInStaff() != null) {
this.processLogin();
} else {
this._router.navigateByUrl('/login');
}
}
});
}
をそれはSPAですので、私は完全にこれらのparamsに加入することができるという考えを理解し、アプリケーションを使用しながら、paramsが変更される可能性があります。
ただし、次のURLにアクセスすると、http://localhost:4200?token=1234はすぐに/ loginに移動します。何らかの理由で、ngOnInitが呼び出されているときは、すぐにqueryParamを検出しません。私がqueryParamsに500のdebounceTimeを追加すると、正しく動作しますが、私の意見では良い解決策ではありません。
誰かに助言がありますか?私は別のものを試しましたが、私はこの問題を抱えています。