flask_jwt_extended 生成新的token的同时销毁旧的token
时间: 2023-05-13 21:05:09 浏览: 470
可以使用 `flask_jwt_extended` 中的 `create_access_token` 函数生成新的 token,并使用 `jwt_required` 装饰器来保护需要验证的路由。在生成新的 token 时,可以使用 `jwt_optional` 装饰器来检查旧的 token 是否存在,如果存在则可以使用 `get_raw_jwt` 函数获取旧的 token 的信息,然后使用 `add_token_to_database` 函数将旧的 token 添加到黑名单中,从而实现销毁旧的 token 的目的。
相关问题
flask_jwt_extended 生成新的token的同时销毁旧的token
可以使用 `flask_jwt_extended` 提供的 `create_access_token` 函数生成新的 token,同时使用 `jwt_manager` 提供的 `jwt_manager._set_blacklist_revoked_token_callback` 函数将旧的 token 加入黑名单并销毁。具体代码如下:
```python
from flask_jwt_extended import create_access_token, jwt_manager
# 生成新的 token
new_token = create_access_token(identity=user_id)
# 将旧的 token 加入黑名单并销毁
@jwt_manager._set_blacklist_revoked_token_callback
def revoke_token_callback(jti, *args, **kwargs):
blacklist.add(jti)
revoke_token_callback(old_token["jti"])
```
其中,`blacklist` 可以是一个 set,用于存储已经被销毁的 token 的 jti。
flask_jwt_extended 生成新的token的同时销毁旧的token 写一个例子给我
当使用 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 将无法使用。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20210720083447.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)