令牌过期时如何防止用户路由
how to prevent user from routing , when token is expired
我正在处理 Angular 7 申请
- 我正在使用 JSON Web 令牌 (JWT) 来保护我的 Angular 应用程序
- 我想检查天气令牌是否已过期,如果它已过期,我想阻止用户路由。 主页和主页旁边除外
- 我只是希望令牌过期就没有用了,这样用户应该被认为“没有
已通过身份验证。
- 我尝试使用 npm install --save @auth0/angular-jwt@beta 进行相同的操作,
但我不想使用任何依赖项做同样的事情
- 我想用路由守卫来做,我用 CanActivate 试过了
但它不起作用
如果您使用 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);
}
}));
}
}
我希望还有其他解决方案。
我正在处理 Angular 7 申请
- 我正在使用 JSON Web 令牌 (JWT) 来保护我的 Angular 应用程序
- 我想检查天气令牌是否已过期,如果它已过期,我想阻止用户路由。 主页和主页旁边除外
- 我只是希望令牌过期就没有用了,这样用户应该被认为“没有 已通过身份验证。
- 我尝试使用 npm install --save @auth0/angular-jwt@beta 进行相同的操作, 但我不想使用任何依赖项做同样的事情
- 我想用路由守卫来做,我用 CanActivate 试过了 但它不起作用
如果您使用 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);
}
}));
}
}
我希望还有其他解决方案。