0

如果用户没有 JWT 或使用了错误的 JWT,是否有内置方法重定向到登录页面?

@api.route('/private', methods=['GET'])
@jwt_required()
def protected():
  logged = get_jwt_identity()
  return jsonify(logged_in=logged), 200

4

1 回答 1

1

最简单的解决方案可能是通过unauthorized_loader. 就像是:

@jwt.unauthorized_loader
def custom_unauthorized_response(_err):
    return redirect(url_for('login'))

如果您需要一些更细粒度的控制,您可以将 abefore_requestverify_jwt_in_request(). 或者创建自己的自定义装饰器,例如:

def jwt_or_redirect():
    def wrapper(fn):
        @wraps(fn)
        def decorator(*args, **kwargs):
            verify_jwt_in_request(optional=True)
            if not get_jwt_identity():
                return redirect(url_for('login'))
            else:
                return fn(*args, **kwargs)

        return decorator

    return wrapper
于 2021-04-18T19:37:09.827 回答