セッションの有効期限の1分前にポップアップを表示するようにアイドルを設定すると問題が発生します。次に、セッションがタイムアウトするか、ユーザーがログアウトします。次回ユーザーがログオンすると、タイムアウトが発生したときに2つのポップアップが表示されます。ユーザーがログアウトしてからもう一度ログインすると、3つのポップアップなどが表示されます。ユーザーがログアウトするとIdleの現在のインスタンスを破壊するにはどうすればよいですか?次のようにログインが成功するたびにng2-idleインスタンス化を複数回実行する方法
私のセットアップは次のとおりです。
constructor(private idle: Idle, ...) {}
ngOnInit() {
this.setIdle();
}
private setIdle() {
// Client activity timeout. 29 minutes to 'idle', 1 minute beyond that to timeout
this.ngZone.runOutsideAngular(() => {
// this.idle.setIdle(29 * 60);
// this.idle.setTimeout(1 * 60);
this.idle.setIdle(10);
this.idle.setTimeout(10);
this.idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);
});
this.idle.onTimeout.subscribe(() => {
this.ngZone.run(() => {
this.errorDialogRef.close();
sessionStorage.setItem('sessionExpired', 'true');
this.displayErrorModal(true);
});
});
this.idle.onIdleStart.subscribe(() => {
this.ngZone.run(() => {
this.displayIdleWarning();
});
});
this.ngZone.runOutsideAngular(() => {
this.idle.watch();
});
}
ログアウト処理中に、私はthis.idle.stop()
とdelete this.idle
を試してみました。しかし、どちらもうまくいった。
FYI:それは角度ゾーンの外で走らなければならない、さもなければ我々の分度器テストが中断する。
アップデート: 私は配列をゼロの解決策を見つけるまで、私がしようとしました:
this.idle.onTimeout.unsubscribe();
this.idle.onIdleStart.unsubscribe();
this.idle.onIdleEnd.unsubscribe();
しかし、唯一以降のログイン時に次のエラーが生じていること:
core.es5.js?0445:1084 ERROR Error: Uncaught (in promise): ObjectUnsubscribedError: object unsubscribed
それ私のコンポーネントがその参照を保持しているか、ログアウト中に破壊されていないようです。
これは実際に機能します!私の一日を本当にありがとうございました。 – shreya