【问题标题】:Angular interceptor http callAngular 拦截器 http 调用
【发布时间】:2020-11-08 07:02:10
【问题描述】:

我有一个从他的后端获取 JWT 的应用程序。此 JWT 有效期为 15 分钟。当我将 JWT 从前端发送到后端时,HTTP 拦截器会将 JWT 附加到 Authorization 标头。

我尝试做的是:

在 Http 拦截器中检查令牌是否仍然有效,如果没有则向后端端点发送请求以获取新的 JWT。

我的问题是:如果我拦截每个附加标头的调用,如果我在拦截器本身中执行 http 请求,我将进入一个循环。

这是我的拦截器:

intercept(req: HttpRequest<any>, next: HttpHandler) {
  let authReq = req;
  const token = this.userService.getUserInfo()?.token;
  const jwtHelper: JwtHelperService = new JwtHelperService();
  if (token != null) {
    if (!jwtHelper.isTokenExpired(token)) {
      authReq = req.clone({headers: req.headers.set(TOKEN_HEADER_KEY, 'Bearer ' + token)});
    } else {
      this.authenticationService.getToken();
    return;
    }
  }
  return next.handle(authReq);
}

这样做的正确方法是什么?

【问题讨论】:

    标签: angular authentication jwt interceptor


    【解决方案1】:

    服务器应该处理令牌的有效性,这不是客户端的逻辑。

    使用令牌发送请求,如果响应将具有 401/403/任何状态,则发送对新令牌的请求。

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 2023-03-13
      • 2017-11-07
      • 2018-05-19
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多