flask_jwt_extended 普通用户跟管理员用户进行区分
时间: 2023-05-14 20:05:54 浏览: 244
flask_jwt_extended 可以通过设置不同的用户角色来区分普通用户和管理员用户。可以在创建 token 时添加用户角色信息,然后在需要进行权限验证的地方进行判断。具体实现可以参考 flask_jwt_extended 的官方文档。
相关问题
flask_jwt_extended 普通用户跟管理员token用户进行区分 写一个例子给我
好的,以下是一个使用 flask_jwt_extended 区分普通用户和管理员用户的例子:
```python
from flask import Flask, jsonify
from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, get_raw_jwt
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # 设置 JWT 密钥
jwt = JWTManager(app)
# 模拟用户数据
users = [
{'id': 1, 'username': 'user1', 'password': 'password1', 'is_admin': False},
{'id': 2, 'username': 'user2', 'password': 'password2', 'is_admin': True}
]
# 登录接口
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if not username or not password:
return jsonify({'msg': 'Missing username or password'}), 400
user = next((u for u in users if u['username'] == username and u['password'] == password), None)
if not user:
return jsonify({'msg': 'Invalid username or password'}), 401
# 生成 JWT token
access_token = create_access_token(identity=user['id'], user_claims={'is_admin': user['is_admin']})
return jsonify({'access_token': access_token}), 200
# 普通用户接口
@app.route('/user', methods=['GET'])
@jwt_required
def user():
user_id = get_jwt_identity()
return jsonify({'msg': f'Hello user {user_id}!'}), 200
# 管理员用户接口
@app.route('/admin', methods=['GET'])
@jwt_required
def admin():
user_id = get_jwt_identity()
if not get_raw_jwt()['is_admin']:
return jsonify({'msg': 'You are not authorized to access this resource'}), 403
return jsonify({'msg': f'Hello admin {user_id}!'}), 200
```
在这个例子中,我们使用了 flask_jwt_extended 扩展来生成 JWT token,并在登录时将用户的 is_admin 属性作为 user_claims 传递给了 create_access_token() 函数。在普通用户接口和管理员用户接口中,我们使用了 @jwt_required 装饰器来保护接口,同时使用 get_jwt_identity() 函数获取用户的 id,使用 get_raw_jwt() 函数获取用户的 user_claims,从而判断用户是否为管理员。
flask_jwt_extended 权限管理
Flask-JWT-Extended 是一个 Flask 扩展,用于管理 JSON Web Tokens(JWT)的权限。它提供了一种简单的方法来保护您的 Flask 应用程序中的端点,并确保只有经过身份验证和授权的用户才能访问它们。您可以使用 Flask-JWT-Extended 来实现基于角色的访问控制、黑名单和令牌刷新等功能。如果您想了解更多关于 Flask-JWT-Extended 的信息,可以查看官方文档。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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://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)