【问题标题】:Using refresh tokens within AngularJS SPA在 AngularJS SPA 中使用刷新令牌
【发布时间】:2018-12-27 10:58:25
【问题描述】:

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

我已经有一个实现,它在每个 API 请求上检查会话是否需要刷新,如果需要,则从网络服务器请求一个新令牌。但是,如果一个页面一次进行 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;
}

【问题讨论】:

    标签: angularjs jwt refresh-token


    【解决方案1】:

    只需增强您的refreshSession 方法,它就不会刷新几次。

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

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 2015-08-17
      • 2015-05-19
      • 2014-06-15
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2019-06-29
      • 2021-06-19
      相关资源
      最近更新 更多