小编Wih*_*Uys的帖子

Flask 无法验证受保护路由的 JWT 签名

我正在尝试使用 JWT 令牌“保护”我的应用程序登录,但似乎我编码或解码错误。尽管 JWT.io 说签名有效,但为什么它说我的签名无效?

我在应用程序初始化中设置密钥,并使用它来编码和解码 JWT 令牌:

#skey = os.urandom(16)
#app.secret_key = f"{skey}"
app.config['SECRET_KEY'] = 'abe535ed6a554fe48e09e111dad2dcbc' #temporary for testing
app.debug = True
print(app.secret_key)
Run Code Online (Sandbox Code Playgroud)

dash用这个函数保护路由:

def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = request.args.get('token') #http://localhost:5000/route?token={jwttoken}
        if not token:
            return jsonify({'message': 'Token is missing'}), 403
        try:
            data = jwt.decode(token, app.secret_key)
        except jwt.ExpiredSignatureError:
            return jsonify({'message': 'Token expired, log in again'}), 403
        except jwt.InvalidTokenError:
            return jsonify({'message': 'Invalid token. Please log in again.'}), 403
        
        return f(*args, **kwargs)
    return decorated
Run Code Online (Sandbox Code Playgroud)

这是破折号路线:

@app.route('/dash', methods=["GET", …
Run Code Online (Sandbox Code Playgroud)

python flask jwt

1
推荐指数
1
解决办法
2641
查看次数

标签 统计

flask ×1

jwt ×1

python ×1