2016-08-28 4 views
1

내 문제는 로그 아웃 버튼을 클릭하면 ng2-idle이 계속 작동한다는 것입니다. 그리고이 문제를 해결하기 위해 setIdle 및 setTimeout 함수를 1 초 동안 다시 설정했습니다.각도 2 - ng2-idle을 사용한 로그 아웃

그러나 사용자가 로그인 화면으로 전환되면 앱에서 1 초가 걸립니다.

logout() 함수를 호출하는 로그 아웃 버튼을 클릭 한 후 제한 시간을 강제 종료하거나 ng2-idle을 종료하는 방법이 있는지 알고 싶습니다.

logout() { 
    this.idle.stop(); 
    this._headerService.exit() 
     .subscribe(
      data => { 
       localStorage.clear(); 
       this._router.navigate(['/auth']);   
      }, 
       error => console.log(error) 
     )       
    } 

this.idle.stop() 또는 this.idle.ngOnDestroy();idle.ts

this.idle.ngOnDestroy();this.idle.stop()this.clearInterrupts(); 모두 포함 기능을 사용할 수 있습니다 :

import {Component} from '@angular/core'; 
import {Router} from "@angular/router"; 
import {Http, Headers} from "@angular/http"; 
import {NgClass} from '@angular/common'; 
import {Observable} from "rxjs/Observable"; 
import 'rxjs/Rx'; 
import {HeaderService} from './header.service'; 
import {Idle, DEFAULT_INTERRUPTSOURCES} from 'ng2-idle/core'; 

@Component({ 
    selector: 'my-header', 
    templateUrl: './js/app/header/header.component.html', 
    styleUrls: ['./js/app/header/header.component.css'] 
}) 

export class HeaderComponent { 
    nome = localStorage['nome']; 
    constructor(private _router: Router, private _http: Http, private _headerService: HeaderService, private idle: Idle) { 
     idle.setIdle(5); 
     idle.setTimeout(1800); 
     idle.setInterrupts(DEFAULT_INTERRUPTSOURCES); 

     idle.onTimeoutWarning.subscribe((countdown:number) => { 
      console.log('TimeoutWarning: ' + countdown); 
     }); 

     idle.onTimeout.subscribe(() => { 
      console.log('Timeout'); 
      localStorage.clear(); 
      this._router.navigate(['/auth', {sessionExpirate: 'true'}]); 
     }); 
     idle.watch(); 
    } 

    logout() { 
     this.idle.setIdle(1); 
     this.idle.setTimeout(1); 
     this.idle.setInterrupts(DEFAULT_INTERRUPTSOURCES); 
     this._headerService.exit() 
      .subscribe(
       data => { 
        this.idle.onTimeout.subscribe(() => { 
         console.log('Timeout'); 
         localStorage.clear(); 
         this._router.navigate(['/auth']); 
       }, 
       error => console.log(error) 
      )} 
     ) 
    } 
} 

답변

2
내가 일을하는 데

는 로그 아웃() 함수의 변화를 다음과

+0

은 ng2-idle 여전히 활성 프로젝트입니까? 나에게 링크 –

+0

을 보내시겠습니까? 그렇습니다. 사이트는 https://www.npmjs.com/package/@ng-idle /core에 https://github.com/HackedByChinese/ng2-idle이 있습니다. – rafaelcb21