You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Flask API进行Token验证时出现Invalid token错误求助

Flask JWT验证返回"Invalid token"的解决方案

问题根源

你的代码在处理Authorization请求头时,直接将完整的Bearer <token>字符串传入jwt.decode(),而JWT库只能解析纯token内容,前缀"Bearer "会导致解析失败,触发InvalidTokenError。

修复代码

修改/verify_token接口的逻辑,提取出token部分:

@app.route('/verify_token', methods=['POST'])
def verify_token():
    auth_header = request.headers.get('Authorization')

    if auth_header:
        # 拆分Bearer前缀与token
        parts = auth_header.split()
        if len(parts) == 2 and parts[0].lower() == 'bearer':
            token = parts[1]
            try:
                # PyJWT v2+需显式指定算法,推荐添加algorithms参数
                decoded = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])
                return jsonify({'message': f'Authorization success for client ID: {decoded["client_id"]}'})
            except jwt.ExpiredSignatureError:
                return jsonify({'message': 'Token has expired'}), 401
            except (jwt.InvalidTokenError, jwt.DecodeError):
                return jsonify({'message': 'Invalid token'}), 401
        # 处理格式错误的Authorization头
        return jsonify({'message': 'Authorization header must be in "Bearer <token>" format'}), 401

    return jsonify({'message': 'No token provided'}), 401

额外优化点

  • 强制指定算法:PyJWT 2.0+版本要求必须显式声明签名算法,添加algorithms=["HS256"]可以避免警告,同时提升安全性。
  • 格式校验:增加对Authorization头结构的校验,提前拦截格式错误的请求,减少无效的JWT解析尝试。

内容的提问来源于stack exchange,提问作者aneesh kumar cd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:33:14