
使用 Flask 这一轻量级且灵活的 Python Web框架,结合 MySQL 这一成熟且功能强大的关系型数据库管理系统,可以高效地实现用户登录及认证功能
本文将详细介绍如何使用 Flask 和 MySQL搭建一个用户登录系统,确保系统既高效又安全
一、引言 Flask 是一个使用 Python编写的轻量级 Web 应用框架,其设计哲学是保持核心简单且可扩展
MySQL 则是一个广泛使用的关系型数据库管理系统,以其高性能、可靠性和易用性而著称
结合 Flask 和 MySQL,我们可以快速搭建一个具备用户注册、登录及认证功能的 Web 应用
二、环境准备 在开始之前,我们需要确保以下环境已正确安装和配置: 1.Python:确保 Python 3.x 已安装
2.Flask:通过 `pip install Flask` 安装 Flask
3.MySQL:安装 MySQL 服务器,并创建一个数据库及用户
4.- Flask-MySQLdb 或 SQLAlchemy:用于 Flask 与 MySQL 的数据库连接
本文使用 Flask-MySQLdb 作为示例
5.bcrypt:用于密码哈希,增强安全性
三、项目结构 为了保持项目的清晰和可维护性,我们采用以下项目结构: my_flask_app/ │ ├── app.py ├── templates/ │├── login.html │├── register.html │└── home.html ├── static/ │└── style.css ├── config.py └── requirements.txt 四、配置 MySQL 数据库 首先,我们需要在 MySQL 中创建一个数据库和用户,并为其分配必要的权限
假设我们创建一个名为`flask_db` 的数据库和一个名为`flask_user` 的用户
sql CREATE DATABASE flask_db; CREATE USER flask_user@localhost IDENTIFIED BY your_password; GRANT ALL PRIVILEGES ON flask_db- . TO flask_user@localhost; FLUSH PRIVILEGES; 然后,在`flask_db`数据库中创建一个用户表`users`,用于存储用户信息
sql USE flask_db; CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL ); 五、配置 Flask 应用 在`config.py`文件中,我们定义数据库连接配置
python import os class Config: SECRET_KEY = os.urandom(24) SQLALCHEMY_DATABASE_URI = mysql+mysqldb://flask_user:your_password@localhost/flask_db SQLALCHEMY_TRACK_MODIFICATIONS = False 在`app.py`文件中,我们初始化 Flask 应用并加载配置
python from flask import Flask, render_template, request, redirect, url_for, flash from flask_mysqldb import MySQL from werkzeug.security import generate_password_hash, check_password_hash import bcrypt app = Flask(__name__) app.config.from_object(config.Config) mysql = MySQL(app) Flash messages configuration app.config【FLASH_MESSAGES】 = True 六、实现用户注册功能 在`templates/register.html`文件中,我们创建一个简单的用户注册表单
html
Already have an account? Login
在`app.py`文件中,我们实现用户注册逻辑python @app.route(/register, methods=【GET, POST】) def register(): if request.method == POST: username = request.form【username】 password = request.form【password】 hashed_password = bcrypt.hashpw(password.encode(utf-8), bcrypt.gensalt()) cursor = mysql.connection.cursor() cursor.execute(SELECT - FROM users WHERE username = %s,(username,)) user = cursor.fetchone() if user is None: cursor.execute(INSERT INTO users(username, password) VALUES(%s, %s),(username, hashed_password.decode(utf-8))) mysql.connection.commit() flash(You have successfully registered!, success) return redirect(url_for(login)) else: flash(Username already exists. Please choose a different one., danger) return render_template(register.html) 七、实现用户登录功能 在`templates/login.html`文件中,我们创建一个简单的用户登录表单
html
Web开发:MySQL数据库实战应用
Flask实现MySQL用户登录指南
MySQL启动错误5:快速排查与解决
解决MySQL导入Error2006技巧
MySQL:高效处理逗号分割数据技巧
MySQL全文搜索常见问题及报错解决方案
MySQL适用数据量上限解析
Web开发:MySQL数据库实战应用
MySQL启动错误5:快速排查与解决
解决MySQL导入Error2006技巧
MySQL:高效处理逗号分割数据技巧
MySQL全文搜索常见问题及报错解决方案
MySQL适用数据量上限解析
为何MySQL非系统内置命令解析
MySQL ALTER语句添加约束指南
DBVis MySQL驱动包:高效连接新指南
命令提示符卸载MySQL失败解决
MySQL:处理空格分隔字符串技巧
Hive与MySQL增量数据同步指南