Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在使用node-oauth2-server npm包时,当grant_类型为refresh_令牌时,不应创建新的refresh_令牌_Node.js_Postgresql_Oauth 2.0 - Fatal编程技术网

Node.js 在使用node-oauth2-server npm包时,当grant_类型为refresh_令牌时,不应创建新的refresh_令牌

Node.js 在使用node-oauth2-server npm包时,当grant_类型为refresh_令牌时,不应创建新的refresh_令牌,node.js,postgresql,oauth-2.0,Node.js,Postgresql,Oauth 2.0,我试图使用Postgres数据库为我的节点应用程序实现Oauth2框架。我遇到了一个名为的节点npm包,它提供了内置的现成的Oauth2框架 我还从IETF中阅读了这篇文章,其中详细描述了OAuth2框架。根据文档,只要access\u令牌无效,我们就可以重新生成一个新的access\u令牌,并将refresh\u令牌传递给authorization服务器。文档说明新的访问\u令牌不需要有新的刷新\u令牌 我的要求是,每当我使用grant\u type作为refresh\u令牌,我只需要生成一个

我试图使用Postgres数据库为我的节点应用程序实现Oauth2框架。我遇到了一个名为的节点npm包,它提供了内置的现成的Oauth2框架

我还从
IETF
中阅读了这篇文章,其中详细描述了
OAuth2框架。根据文档,只要
access\u令牌
无效,我们就可以重新生成一个新的
access\u令牌
,并将
refresh\u令牌
传递给
authorization
服务器。文档说明新的
访问\u令牌
不需要有新的
刷新\u令牌

我的要求是,每当我使用
grant\u type
作为
refresh\u令牌
,我只需要生成一个新的
access\u令牌
。在使用npm包时,我可以看到每当授予类型为
refresh\u-token
时,它都会生成一个新的
refresh\u-token

有人能帮助我如何确保在使用npm包的
grant\u type
refresh\u token
时只生成
access\u token

在npm包中重新生成刷新令牌的代码如下

 function generateRefreshToken (done) {
      if (this.config.grants.indexOf('refresh_token') === -1) return done();

      var self = this;
      token(this, 'refreshToken', function (err, token) {
      self.refreshToken = token;
      done(err);
  });
}
我也浏览了github和stackoverflow上的这些链接,但找不到答案


  • 请检查DB中的refresh_令牌的expires值,因为它可能已经过期,所以lib正在重新生成它。我检查了DB中refresh_令牌的expire值,但它尚未过期。尽管如此,每当授予类型为refresh\u token时,它仍会生成其他点,refresh token expire不应小于access token expire,否则将无效,我有两个假设,第一个假设是lib将比较refresh和access token的过期日期,或者每次创建新的访问令牌时生成第二个刷新令牌,为了避免刷新令牌在访问令牌之前过期的情况,请检查刷新令牌是否过期为null,它应该表示不朽的刷新令牌。根据文档,默认的accessTokenLifetime为3600,refreshTokenLifetime为1209600。那么第一个条件就不存在了。其次我可以将名为refreshTokenLifetime的参数传递为null,以提供不朽的refreshToken,但它仍然会在授予类型上创建一个新的refreshToken作为refreshToken。那么这可能是一个bug吗?您在GitHub上提到过这个问题吗?请检查refreshToken在DB中的expires值,因为它可能已经过期,所以lib正在生成它再次,我检查了数据库中refresh_令牌的expire值,它还没有过期。尽管如此,每当授予类型为refresh\u token时,它仍会生成其他点,refresh token expire不应小于access token expire,否则将无效,我有两个假设,第一个假设是lib将比较refresh和access token的过期日期,或者每次创建新的访问令牌时生成第二个刷新令牌,为了避免刷新令牌在访问令牌之前过期的情况,请检查刷新令牌是否过期为null,它应该表示不朽的刷新令牌。根据文档,默认的accessTokenLifetime为3600,refreshTokenLifetime为1209600。那么第一个条件就不存在了。其次,我可以将名为refreshTokenLifetime的参数作为null传递给我不朽的refreshToken,但它仍然会在授予类型上创建一个新的refresh_令牌作为refresh_令牌。那么这可能是一个bug,您在GitHub上提到过这个问题吗?