我正在使用angular-oauth2-oidc
包,我使用隐式流,并且(目前)无法迁移到代码流。
当流程结束时,我想导航到原始 url,我使用了文档建议的保留状态。
我的问题是我无法从函数导航,通过解决onTokenReceived
的承诺解决但控制台上没有错误:navitageByUrl
false
export class AppComponent {
url: string;
constructor(
private oauthService: OAuthService,
private router: Router) {
this.url = window.location.pathname; // Get requested url.
}
ngOnInit() {
this.oauthService.loadDiscoveryDocument().then(res => {
console.log(res);
this.oauthService.tryLogin({
onTokenReceived: (info) => {
// Receive state and navitage to.
this.router.navigateByUrl(info.state).then(res => {
if (!res) {
console.error("Navigate to " + info.state + " after get token:" + res);
}
});
}
}).then(res => {
if (!res) { // If not login init implicit flow passing url as state.
this.oauthService.initImplicitFlow(this.url);
}
})
})
}
}
但是,如果使用以下命令在 100 毫秒后运行,它会起作用setTimeout
:
onTokenReceived: (info) => {
// Receive state and navitage to.
setTimeout(() => {
this.router.navigateByUrl(info.state).then(res => {
if (!res) {
console.error("Navigate to " + info.state + " after get token:" + res);
}
});
}, 100); // With less than 100 not works.
}
有人可以帮助我吗?为什么 navigateByUrl 不起作用?