令牌过期时如何防止用户路由

how to prevent user from routing , when token is expired

我正在处理 Angular 7 申请

如果您使用 CanActivate 那么您可能必须在每次路由更改时进行网络调用以探测身份验证是否已过期。至少我是这么想的。

如果可能,您可以在后端进行检查并拒绝所有呼叫、API 呼叫和所有其他使用 401 未授权访问状态代码的呼叫。

有了这个,您可以设置一个拦截器来处理 401 并将用户重定向到登录页面,或者添加一个逻辑来根据需要刷新令牌。您还可以传递 Location header 并将其用于重定向。

import {throwError as observableThrowError,  Observable } from 'rxjs';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
    constructor(private router: Router) {}
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        return next.handle(req).pipe(
            catchError((err: any, caught) => {
                if (err instanceof HttpErrorResponse) {
                    if (err.status === 401) {
                       // Redirect or refresh token.
                    }
                    return observableThrowError(err);
                }
            }));
    }
}

我希望还有其他解决方案。