代码之家  ›  专栏  ›  技术社区  ›  Chris

在angularjs spa中使用刷新令牌

  •  0
  • Chris  · 技术社区  · 6 年前

    通过angularjs中的刷新令牌请求新jwt身份验证令牌的正确方法是什么?

    我已经有了一个实现,在每个API请求上,检查会话是否需要刷新,如果需要,则从web服务器请求一个新的令牌但是,如果一个页面一次进行3次调用,它会为每个调用请求一个新的刷新令牌,这似乎不正确-我认为它应该只更新一次令牌。

    是否有方法阻止其他调用,或者我应该将刷新设置为一个间隔,而不是通过拦截器进行?

    拦截器请求方法

    request = (config: angular.IRequestConfig) => {
    
        this.setBearerToken(config);
    
        var responsePromise = this.$q.when(config);
    
        if (config.url !== this.tokenUrl) {
    
            const factSession = this.$injector.get("factSession") as Session;
    
            if (factSession.shouldRefreshToken()) {
                responsePromise = factSession
                    .refreshSession()
                    .then(() => {
                        this.setBearerToken(config);
    
                        return config;
                    });
            }
        }
    
        return responsePromise;
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Petr Averyanov    6 年前

    只是增强你的 refreshSession 方法,因此它不会刷新多次。

    var refreshPromise;
    
    refreshSession: () => {
      if (!refreshPromise) {
        refreshPromise = $http.get(...);
        refreshPromise.finally(() => refreshPromise = null);
      }
    
      return refreshPromise;
    }