flask_jwt_extended 创建token的时候 获取 jti值
时间: 2023-05-13 09:05:11 浏览: 122
在使用 flask_jwt_extended 创建 token 的时候,可以通过设置 JWT_IDENTITY_CLAIM 参数来获取 jti 值。具体的代码实现可以参考 flask_jwt_extended 官方文档中的示例。
相关问题
flask_jwt_extended 创建token的时候 获取 jti值 写一个例子给我
当然可以,以下是一个使用 flask_jwt_extended 创建 token 并获取 jti 值的例子:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, create_access_token, get_jwt_identity
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
# 假设这里有一个验证用户身份的过程
user_id = '123456'
access_token = create_access_token(identity=user_id)
jti = get_jwt_identity()['jti']
return {'access_token': access_token, 'jti': jti}
if __name__ == '__main__':
app.run()
```
在上面的例子中,我们首先创建了一个 Flask 应用,并设置了 JWT 密钥。然后,在 `/login` 路由中,我们使用 `create_access_token` 函数创建了一个 token,并使用 `get_jwt_identity` 函数获取了 token 的 payload 中的 jti 值。最后,我们将 access_token 和 jti 值一起返回给客户端。
给我写一个 flask_jwt_extended 使用 token_in_blocklist_loader 的例子
好的,以下是一个使用 flask_jwt_extended 和 token_in_blocklist_loader 的例子:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, jwt_required, create_access_token, get_jwt_identity, get_raw_jwt
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
# 模拟一个 token 黑名单
blocklist = set()
# 定义 token_in_blocklist_loader 回调函数
@jwt.token_in_blocklist_loader
def check_if_token_in_blocklist(jwt_header, jwt_payload):
jti = jwt_payload['jti']
return jti in blocklist
# 定义登录接口
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if username != 'admin' or password != 'admin':
return jsonify({"msg": "Bad username or password"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
# 定义需要 token 认证的接口
@app.route('/protected', methods=['GET'])
@jwt_required
def protected():
current_user = get_jwt_identity()
return jsonify(logged_in_as=current_user), 200
# 定义注销接口
@app.route('/logout', methods=['DELETE'])
@jwt_required
def logout():
jti = get_raw_jwt()['jti']
blocklist.add(jti)
return jsonify({"msg": "Successfully logged out"}), 200
if __name__ == '__main__':
app.run()
```
这个例子中,我们定义了一个 token 黑名单 `blocklist`,并在 `token_in_blocklist_loader` 回调函数中检查 token 是否在黑名单中。当用户注销时,我们将该 token 的 `jti` 添加到黑名单中。这样,即使该 token 没有过期,也无法再次使用。
阅读全文