from datetime import timedelta
from flask import Flask, jsonify, request
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'your-secret-key' # 设置密钥
# Set the token expiration time
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(hours=2)
jwt = JWTManager(app)
# 假设您的用户信息存储在数据库中
users = [
{"username": "admin", "password": "admin"},
{"username": "user", "password": "pass"}
]
# 用户登录路由
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
# 验证用户名和密码是否匹配
for user in users:
if user["username"] == username and user["password"] == password:
# 创建访问令牌
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
return jsonify({"msg": "Invalid username or password"}), 401
@jwt.expired_token_loader
def my_expired_token_callback(a,b):
return jsonify({
'code': 401,
'message': 'token已过期'
})
# 受保护的路由,需要访问令牌进行身份验证
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
# 获取当前用户
current_user = get_jwt_identity()
print(current_user)
return jsonify(logged_in_as=current_user), 200
flask使用flask_jwt_extended进行用户登录验证
发布时间 2023-08-22 16:06:04作者: 朝朝暮Mu