1.前端
<!-- login.wxml -->
<view class="container">
<input type="text" placeholder="请输入用户名" bindinput="bindUsername" />
<input type="password" placeholder="请输入密码" bindinput="bindPassword" />
<button type="primary" bindtap="login">登录</button>
</view>
// login.js
Page({
data: {
username: '',
password: ''
},
bindUsername: function (e) {
this.setData({
username: e.detail.value
});
},
bindPassword: function (e) {
this.setData({
password: e.detail.value
});
},
login: function () {
const that = this;
wx.request({
url: 'http://127.0.0.1:5000/login',
method: 'POST',
data: {
username: that.data.username,
password: that.data.password
},
success(res) {
if (res.data.code === 200) {
wx.showToast({
title: '登录成功',
icon: 'success',
duration: 2000
});
} else {
wx.showToast({
title: '用户名或密码错误',
icon: 'error',
duration: 2000
});
}
},
fail() {
wx.showToast({
title: '请求失败',
icon: 'error',
duration: 2000
});
}
});
}
});
/* login.wxss */
.container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
background-color: #f0f2f5;
}
.form-item {
margin-bottom: 20px;
width: 80%;
}
.input {
width: 100%;
height: 40px;
padding: 0 10px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 16px;
background-color: #fff;
}
.btn {
width: 80%;
height: 45px;
background-color: #007aff;
color: #ffffff;
text-align: center;
line-height: 45px;
border-radius: 5px;
font-size: 18px;
font-weight: bold;
border: none;
}
2.后端
# server.py
from flask import Flask, request, jsonify
import pymysql
app = Flask(__name__)
# 数据库连接
def get_db_connection():
connection = pymysql.connect(
host='localhost',
user='root',
password='password',
database='user_db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
return connection
# 登录接口
@app.route('/login', methods=['POST'])
def login():
data = request.get_json()
username = data.get('username')
password = data.get('password')
# 数据库查询用户信息
connection = get_db_connection()
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM users WHERE username=%s AND password=%s"
cursor.execute(sql, (username, password))
user = cursor.fetchone()
if user:
return jsonify({'code': 200, 'message': '登录成功'})
else:
return jsonify({'code': 401, 'message': '用户名或密码错误'})
finally:
connection.close()
if __name__ == '__main__':
app.run(debug=True)
3.DB
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID,主键,自增',
username VARCHAR(100) NOT NULL UNIQUE COMMENT '用户名,唯一且必填',
password VARCHAR(255) NOT NULL COMMENT '密码(存储加密后的密码)',
email VARCHAR(100) UNIQUE COMMENT '用户邮箱,唯一',
phone_number VARCHAR(20) UNIQUE COMMENT '用户手机号码,唯一',
role ENUM('admin', 'user') DEFAULT 'user' COMMENT '用户角色,默认为普通用户',
register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间,默认为记录创建的时间',
last_login DATETIME COMMENT '上次登录时间,记录用户最近一次的登录时间',
is_active BOOLEAN DEFAULT TRUE COMMENT '用户状态,是否激活,默认值为激活'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表,用于存储用户基本信息';
运行效果: