使用flask jwt扩展的Api是否存在身份验证问题?

使用flask jwt扩展的Api是否存在身份验证问题?,flask,flask-restful,flask-jwt-extended,Flask,Flask Restful,Flask Jwt Extended,我已经用flask restful和flask jwt扩展构建了一个api,并正确配置了令牌过期和失效的验证通道。然而,即使api构建了令牌过期和无效验证回调,它也不能正确处理并报告错误:签名已过期 在云中的服务器上,我们有一个16gb ram的Centos 7 x64,使用19.9.0版的gunicorn运行应用程序。使用miniconda创建应用程序的python环境 在生产环境中的测试中,应用程序抱怨令牌过期。但是,在测试环境中,使用Ubuntu 18.04.2、x64和16 gb ram

我已经用flask restful和flask jwt扩展构建了一个api,并正确配置了令牌过期和失效的验证通道。然而,即使api构建了令牌过期和无效验证回调,它也不能正确处理并报告错误:签名已过期

在云中的服务器上,我们有一个16gb ram的Centos 7 x64,使用19.9.0版的gunicorn运行应用程序。使用miniconda创建应用程序的python环境

在生产环境中的测试中,应用程序抱怨令牌过期。但是,在测试环境中,使用Ubuntu 18.04.2、x64和16 gb ram,使用与miniconda和gunicorn相同的设置,应用程序在执行时没有问题,当令牌过期时返回正确的消息

我的jwt.py

错误日志:


我试图理解为什么应用程序能够在测试环境中正确返回令牌过期消息,而在生产环境中它返回错误代码500 Internal Server error。除了在我们的应用程序中修复此问题。

基于项目存储库中的此链接,我发现此问题与名为PROPAGATE_EXCEPTIONS的flask配置选项有关,该选项必须为True


帮助我找到答案的flask jwt扩展存储库中的问题。

基于在项目存储库中找到的此链接,我发现问题与名为PROPAGATE_EXCEPTIONS的flask配置选项有关,该选项必须为True

帮助我找到答案的flask jwt扩展存储库中的说明。

指出flask Restful需要忽略jwt和jwt扩展异常,并提供了一个简单的片段来解决这个问题

从上面的链接复制代码

from flask_jwt_extended.exceptions import JWTExtendedException
from jwt.exceptions import PyJWTError

class FixedApi(Api):
  def error_router(self, original_handler, e):
    if not isinstance(e, PyJWTError) and not isinstance(e, JWTExtendedException) and self._has_fr_route():
      try:
        return self.handle_error(e)
      except Exception:
        pass  # Fall through to original handler
    return original_handler(e)
声明Flask Restful需要忽略JWT和JWT扩展异常,并提供一个简单的代码片段来解决此问题

从上面的链接复制代码

from flask_jwt_extended.exceptions import JWTExtendedException
from jwt.exceptions import PyJWTError

class FixedApi(Api):
  def error_router(self, original_handler, e):
    if not isinstance(e, PyJWTError) and not isinstance(e, JWTExtendedException) and self._has_fr_route():
      try:
        return self.handle_error(e)
      except Exception:
        pass  # Fall through to original handler
    return original_handler(e)
from flask_jwt_extended.exceptions import JWTExtendedException
from jwt.exceptions import PyJWTError

class FixedApi(Api):
  def error_router(self, original_handler, e):
    if not isinstance(e, PyJWTError) and not isinstance(e, JWTExtendedException) and self._has_fr_route():
      try:
        return self.handle_error(e)
      except Exception:
        pass  # Fall through to original handler
    return original_handler(e)