写一个登录后台用redis+token实现
时间: 2024-06-11 17:07:08 浏览: 16
以下是一个简单的使用Redis Token实现登录后台的示例代码:
1. 首先,安装redis-py模块:
```bash
pip install redis
```
2. 导入redis模块和其他必要的模块:
```python
import uuid
import redis
from flask import Flask, request, jsonify
```
3. 创建Flask应用程序和Redis连接:
```python
app = Flask(__name__)
redis_conn = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
```
4. 创建登录接口:
```python
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
# 在这里验证用户名和密码
# 如果验证成功,为用户生成一个唯一的Token
token = str(uuid.uuid4())
# 将Token存储在Redis中,键名为Token,键值为用户名
redis_conn.set(token, username)
# 返回Token给客户端
return jsonify({'token': token})
```
5. 创建需要登录验证的接口:
```python
@app.route('/protected', methods=['GET'])
def protected():
# 从请求头部获取Token
token = request.headers.get('Authorization')
# 检查Token是否存在于Redis中
if redis_conn.exists(token):
# 如果存在,返回受保护的内容
return jsonify({'message': 'Welcome!'})
# 如果Token不存在,返回401 Unauthorized错误
return jsonify({'error': 'Unauthorized'}), 401
```
6. 运行应用程序:
```python
if __name__ == '__main__':
app.run(debug=True)
```
现在,您可以使用POST /login接口进行身份验证,并使用GET /protected接口进行受保护的访问,只有在提供有效令牌时才能访问。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)