flask_jwt_extended 生成新的token的同时销毁旧的token 写一个例子给我
时间: 2023-05-13 09:05:09 浏览: 59
当使用 Flask JWT Extended 时,可以使用 `create_access_token()` 函数生成新的 token,并使用 `get_raw_jwt()` 函数获取旧的 token,然后将其添加到黑名单中以销毁旧的 token。下面是一个示例代码:
```python
from flask import Flask
from flask_jwt_extended import JWTManager, create_access_token, get_raw_jwt
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
# 模拟黑名单
blacklist = set()
@app.route('/login', methods=['POST'])
def login():
# 验证用户身份,如果验证通过,生成新的 token
access_token = create_access_token(identity='user_id')
# 获取旧的 token
old_token = get_raw_jwt()['jti']
# 将旧的 token 添加到黑名单中
blacklist.add(old_token)
return {'access_token': access_token}
# 检查 token 是否在黑名单中
@jwt.token_in_blacklist_loader
def check_if_token_in_blacklist(decrypted_token):
jti = decrypted_token['jti']
return jti in blacklist
if __name__ == '__main__':
app.run()
```
在上面的代码中,我们定义了一个 `/login` 路由,当用户登录成功后,我们生成新的 token,并将旧的 token 添加到黑名单中。我们还定义了一个 `check_if_token_in_blacklist()` 函数,用于检查 token 是否在黑名单中。如果 token 在黑名单中,那么该 token 将无法使用。