내가 토큰을 TTL refresing에 대한 접근 찾지 못했습니다 오랜 시간 후 : 내가 할 innactive 나는 45 분 페이지를 새로 고침하면 2 주각도 - JWT 새로 고침 토큰
: 삼십분 새로 고침 TTL을 getAccessToken() 함수는 만료 된 토큰을 보내고 새로 고친 토큰을 다시 보냅니다. 큰 문제는 내 페이지가 첫 번째 요청 내 토큰 두 번째 요청의 힘을 무효화 할 경우 1 개 이상의 아약스 요청 후 만드는 경우는 빈 토큰
@NgModule({
providers: [
{
provide: AuthHttp,
useFactory: authHttpServiceFactory,
deps: [Http, RequestOptions, Router]
}
]
})
export function authHttpServiceFactory(http: Http, options: RequestOptions, router: Router) {
return new AuthHttp(new AuthConfig({
tokenName: 'token',
tokenGetter: (() => getAccessToken(http,router)),
//tokenGetter: (() => localStorage.getItem('JWToken')),
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
}), http, options);
}
function getAccessToken(http: Http, router:Router): Promise<string> {
let jwtHelper: JwtHelper = new JwtHelper();
let accessToken = localStorage.getItem('JWToken');
if(accessToken == '' || !accessToken || accessToken == undefined || accessToken == null){
router.navigate(['./admin/login']);
return;
}
if (jwtHelper.isTokenExpired(accessToken)) {
return new Promise((resolve, reject) => {
let refreshTokenService: RefreshTokenService = new RefreshTokenService(http);
refreshTokenService.refreshToken(accessToken).subscribe((res: any) => {
res = res.json();
if(res.token) {
localStorage.setItem('JWToken', res.token);
resolve(res.token);
}else{
localStorage.removeItem('JWToken');
router.navigate(['./admin/login']);
}
});
});
} else {
return Promise.resolve(accessToken);
}
}
내가 요청의 응답을 기다리는 원하는 보내 becauce 내 다시 로그인 할 수 있다는 것입니다 첫 번째 요청
새로 고침 토큰 및 요청을 원활하게 처리해야하는 angular2-jwt의 포크/확장이 있습니다. 아직 시도하지 않았습니까? https://github.com/leonardobazico/angular2-jwt-refresh –