请按如下材料,实现用户登陆接口(提供给前端调用的http接口) 接口名称:登录 请求路径:/customer/open/user/login1 请求方式:post 请求格式:application/json 请求输入: Header:无 payload: userPhone:"手机号码",//字符串 userPassword:"密码" 响应格式:application/json 响应返回:{ "code":200 //业务响应码 "msg":"业务成功" // 结果信息 "data":{ token:登录令牌 //(长整型)}} 数据表以及初始化数据(基于MySQL数据库) -- ---------------------------- -- Table structure for t_user_info -- ---------------------------- DROP TABLE IF EXISTS `t_user_info`; CREATE TABLE `t_user_info` ( `id` bigint(36) NOT NULL COMMENT '用户编号', `user_phone` varchar(200) NOT NULL COMMENT '手机号', `user_password` varchar(200) NOT NULL COMMENT '密码', `user_location` varchar(200) DEFAULT NULL COMMENT '收货地址', `user_type` tinyint(4) NOT NULL COMMENT '用户类型:1-会员 2-门店管理员 3-平台管理员', `create_at` datetime DEFAULT NULL COMMENT '创建时间', `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人编号', `update_at` datetime DEFAULT NULL COMMENT '最后更新时间', `update_user_id` bigint(20) DEFAULT NULL COMMENT '最后更新人编号', `user_logo` varchar(255) DEFAULT NULL, `user_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='用户信息表'; -- ---------------------------- -- Records of t_user_info -- ---------------------------- INSERT INTO `t_user_info` VALUES ('769276897803632640', '13111111111', '123456', null, '3', '2020-10-23 19:11:45', null, null, null, null, null);
时间: 2023-08-25 17:16:34 浏览: 45
好的,以下是一个示例的实现代码,供参考:
```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)
```
需要注意的是,上述代码中的数据库连接信息需要根据实际情况进行修改。此外,为了增强安全性,建议将token的密钥从代码中抽离出来,放到配置文件中。