Flask-JWT-Extended,一个让 JWT 集成变得简单的 Flask 扩展,轻松实现身份验证!

文摘   2024-12-19 08:00   内蒙古  

大家好,我是K哥!今天我们要一起探索的是Flask-JWT-Extended,一个让JSON Web Tokens(JWT)集成变得简单无比的Flask扩展。在现代Web应用中,身份验证是一个核心功能,而JWT作为一种流行的身份验证方法,以其安全性和简洁性受到广泛欢迎。那么,让我们开始今天的Python学习之旅吧!

JWT简介

在我们深入Flask-JWT-Extended之前,先简单了解一下JWT是什么。JWT是一种紧凑且自包含的方式,用于在各方之间以JSON对象的形式安全地传输信息。每个JWT由三部分组成:头部、载荷和签名。想象一下,JWT就像是一个密封的信封,头部和载荷是信件内容,签名则是确保信件在传递过程中未被篡改的蜡封。

安装Flask-JWT-Extended

首先,让我们来安装Flask-JWT-Extended。如果你的Flask环境已经搭建好,那么安装Flask-JWT-Extended就非常简单了。你可以使用pip来安装:

pip install Flask-JWT-Extended

配置Flask-JWT-Extended

安装完成后,我们需要在Flask应用中配置Flask-JWT-Extended。这通常涉及到初始化一个JWTManager对象,并设置一些基本的配置。

from flask import Flask
from flask_jwt_extended import JWTManager

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'your-secret-key'  # 用于签名的密钥

jwt = JWTManager(app)

小贴士:记得更换your-secret-key为你自己的密钥,这是用于签名JWT的。

创建和验证JWT

接下来,我们来看看如何使用Flask-JWT-Extended来创建和验证JWT。

from flask import jsonify
from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    current_user = get_jwt_identity()
    return jsonify(logged_in_as=current_user), 200

@app.route('/login', methods=['POST'])
def login():
    username = 'example'
    password = 'password'
    # 这里应该是验证用户名和密码的逻辑
    access_token = create_access_token(identity=username)
    return jsonify(access_token=access_token), 200

注意事项:在实际应用中,密码应该进行加密处理,而不是明文存储。

刷新和撤销JWT

JWT可以设置过期时间,当JWT过期后,我们可以使用刷新令牌(refresh token)来获取新的访问令牌。同时,我们也可以主动撤销JWT。

from flask_jwt_extended import create_refresh_token

@app.route('/refresh', methods=['POST'])
def refresh():
    refresh_token = request.args.get('refresh')
    new_token = create_access_token(identity=get_jwt_identity(refresh_token))
    return jsonify(access_token=new_token), 200

@app.route('/revoke', methods=['POST'])
def revoke():
    jwt_id = request.args.get('jwt')
    jwt.revoke_token(jwt_id)
    return jsonify(revoked=True), 200

实际应用场景

Flask-JWT-Extended在实际开发中非常有用,比如API的身份验证、用户会话管理、授权等。你可以用它来构建任何需要安全身份验证的Web应用。

练习题

好了,到了检验学习成果的时候了。试试以下练习题:

  1. 实现一个用户登录功能,并使用Flask-JWT-Extended生成JWT。
  2. 创建一个受保护的路由,只有JWT验证通过的用户才能访问。
  3. 实现JWT的刷新和撤销功能,并思考它们在实际应用中的意义。

总结

今天我们一起学习了Flask-JWT-Extended,了解了如何使用这个Flask扩展来实现JWT身份验证。从安装配置到创建和验证JWT,再到刷新和撤销JWT,Flask-JWT-Extended提供了一套完整的解决方案,使得身份验证变得简单而高效。

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问K哥哦。祝大家学习愉快,Python学习节节高!

职场谁说
聊聊职场那些事儿
 最新文章