以上代码,algorithm='RS256', private_key=private_key 意外实参
时间: 2024-04-04 14:33:24 浏览: 65
用python模拟了下人工智能课上的遗传算法hhh。设函数_f(x)_=_x^2,求其在区间[0
非常抱歉,是我疏忽了。在 Flask-JWT-Extended 中,使用非对称加密时的算法应该是 `RS256`,而不是 `HS256`。所以在创建 access token 时,需要将 `algorithm` 参数指定为 `RS256`,并传入私钥的参数名应该是 `private_key`,而不是 `private_key_path`。下面是修改后的代码:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, jwt_required, create_access_token, get_jwt_identity
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret'
jwt = JWTManager(app)
# 生成公钥和私钥
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
@app.route('/login', methods=['POST'])
def login():
# 获取用户信息
username = request.json.get('username', None)
password = request.json.get('password', None)
# 验证用户信息(这里省略具体实现)
if username != 'user' or password != 'pass':
return {'msg': '用户名或密码错误'}, 401
# 生成 access token
access_token = create_access_token(identity=username, algorithm='RS256', private_key=private_key)
return {'access_token': access_token}, 200
@app.route('/protected', methods=['GET'])
@jwt_required(algorithms=['RS256'], public_key=public_key)
def protected():
# 获取当前用户身份信息
current_user = get_jwt_identity()
return {'msg': f'Hello, {current_user}!'}, 200
if __name__ == '__main__':
app.run(debug=True)
```
非常感谢您的指正,我会更加注意代码的准确性。
阅读全文