import pymysql from flask import Flask, jsonify, request from flask_cors import CORS from werkzeug.security import check_password_hash, generate_password_hash import jwt from datetime import datetime, timedelta app = Flask(__name__) CORS(app) # 连接数据库 conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4') # 登录接口 @app.route('/customer/open/user/login1', methods=['POST']) def login(): # 解析请求参数 user_phone = request.json.get('userPhone') user_password = request.json.get('userPassword') # 查询数据库,判断用户是否存在 cursor = conn.cursor() sql = "SELECT * FROM t_user_info WHERE user_phone=%s" cursor.execute(sql, user_phone) user = cursor.fetchone() if not user: return jsonify({'code': 400, 'msg': '用户不存在'}) # 验证密码是否正确 if not check_password_hash(user[2], user_password): return jsonify({'code': 400, 'msg': '密码错误'}) # 生成token payload = { 'user_id': user[0], 'exp': datetime.utcnow() + timedelta(days=1) } token = jwt.encode(payload, 'secret', algorithm='HS256').decode('utf-8') # 返回响应 return jsonify({'code': 200, 'msg': '登录成功', 'data': {'token': token}}) if __name__ == '__main__': app.run(debug=True)写上注释
时间: 2023-12-28 17:05:05 浏览: 185
Flask框架通过Flask_login实现用户登录功能示例
好的,以下是注释版本的代码:
```python
import pymysql
from flask import Flask, jsonify, request
from flask_cors import CORS
from werkzeug.security import check_password_hash, generate_password_hash
import jwt
from datetime import datetime, timedelta
app = Flask(__name__)
CORS(app)
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4')
# 登录接口
@app.route('/customer/open/user/login1', methods=['POST'])
def login():
# 解析请求参数
user_phone = request.json.get('userPhone')
user_password = request.json.get('userPassword')
# 查询数据库,判断用户是否存在
cursor = conn.cursor()
sql = "SELECT * FROM t_user_info WHERE user_phone=%s"
cursor.execute(sql, user_phone)
user = cursor.fetchone()
if not user:
return jsonify({'code': 400, 'msg': '用户不存在'})
# 验证密码是否正确
if not check_password_hash(user[2], user_password):
return jsonify({'code': 400, 'msg': '密码错误'})
# 生成token
payload = {
'user_id': user[0],
'exp': datetime.utcnow() + timedelta(days=1)
}
token = jwt.encode(payload, 'secret', algorithm='HS256').decode('utf-8')
# 返回响应
return jsonify({'code': 200, 'msg': '登录成功', 'data': {'token': token}})
if __name__ == '__main__':
app.run(debug=True)
```
注释已经加上了,代码中使用了Flask框架搭建了一个简单的API服务,并使用了pymysql库连接MySQL数据库。其中,`login()`方法实现了登录接口的逻辑,包括解析请求参数、查询数据库、验证密码、生成token和返回响应。在生成token时,使用了`jwt`库进行编码,将用户id和token过期时间保存在payload中,然后使用HS256算法编码生成token。在实际生产环境中,需要根据实际需求修改算法和加密密钥等参数。
阅读全文