flask_jwt_extended 自动销毁旧token
时间: 2023-05-13 14:05:10 浏览: 122
Flask-JWT-Extended 不会自动销毁旧的 token,但是可以通过设置 token 的过期时间来达到自动销毁的效果。可以使用 `JWT_ACCESS_TOKEN_EXPIRES` 和 `JWT_REFRESH_TOKEN_EXPIRES` 来设置 token 的过期时间。
相关问题
flask_jwt_extended 蓝图中 销毁旧的token给我写一个例子
当用户注销或更改密码时,我们需要使旧的token失效,以确保安全性。下面是一个使用 flask_jwt_extended 蓝图销毁旧的token的例子:
```python
from flask import Blueprint
from flask_jwt_extended import jwt_required, get_jwt_identity, get_raw_jwt
auth_bp = Blueprint('auth', __name__)
@auth_bp.route('/logout', methods=['POST'])
@jwt_required
def logout():
jti = get_raw_jwt()['jti']
# 将 jti 添加到黑名单中
# 这样,所有使用该 jti 的 token 都将失效
# 你可以使用 redis 或者数据库来实现黑名单
# 这里只是一个简单的示例
BLACKLIST.add(jti)
return {'message': '注销成功'}, 200
```
在上面的例子中,我们使用了 flask_jwt_extended 提供的 get_raw_jwt() 函数来获取当前 token 的 jti(JWT ID)值,然后将其添加到一个黑名单中,以使所有使用该 jti 的 token 失效。BLACKLIST 可以是一个 set 或者一个列表,用于存储所有失效的 jti 值。
请注意,这只是一个简单的示例,实际应用中你需要更加严格的安全措施来保护用户的隐私和数据安全。
flask_jwt_extended 如何主动销毁一个token
可以使用 `jwt_manager.token_in_blacklist_loader` 方法来实现主动销毁一个 token。具体实现方法如下:
1. 在 Flask 应用中初始化 JWT 扩展:
```python
from flask_jwt_extended import JWTManager
jwt_manager = JWTManager(app)
```
2. 创建一个 token 黑名单列表:
```python
blacklist = set()
```
3. 实现 `jwt_manager.token_in_blacklist_loader` 方法:
```python
@jwt_manager.token_in_blacklist_loader
def check_if_token_in_blacklist(decrypted_token):
jti = decrypted_token['jti']
return jti in blacklist
```
4. 在需要主动销毁 token 的地方,将 token 的 jti 添加到黑名单列表中:
```python
blacklist.add(jti)
```
这样,当使用已被添加到黑名单列表中的 jti 创建 token 时,`check_if_token_in_blacklist` 方法会返回 True,从而使得该 token 无效。
阅读全文
相关推荐












