[英]Logout User and Redirect User to Login on Token Expiration - Angular 8
我收到idToken
並且我還得到時間戳格式的過期時間expTime
例如: 1605803717
基本上在 1 天內過期。 如果idToken
過期,我想注銷用戶並將用戶重定向到登錄頁面。 我已經實現了一個 HTTPInterceptor 如下:
intercept(
request: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
this.token = JSON.parse(localStorage.getItem("getToken"));
if (this.tokenExpired(this.token)) {
Auth.signOut().then((res) => {
this.authState === "signedout";
this.router.navigate(["/login"]);
});
} else {
return;
}
}
private tokenExpired(token: number) {
const expiry = token;
return Math.floor(new Date().getTime() / 1000) >= expiry;
}
我的問題是要知道這個實現是否會自動工作,我的意思是,當idToken
過期時,這個攔截器會自動觸發還是我需要設置某種觸發器? HTTP攔截器是如何工作的? 它是否能夠捕獲時間到期並注銷用戶,或者我必須實現其他功能來捕獲idToken
到期?
我實現它的一種方法是使用代碼 401 捕獲未經授權的錯誤。在我們的例子中處理錯誤是使用 refreshToken 更新令牌,但是如果你願意,你可以注銷和重定向
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).pipe(
catchError((err) => {
// Unauthorized
if (err && err.status === 401) {
// Logout User
// Redirect
// etc.
} else {
// This will forward other errors since
// this interceptor code is invoked on every http request
return next.handle(req);
}
}),
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.