news 2026/6/10 9:34:00

Flask登录验证实战:从零构建一个基础的账号密码登录系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flask登录验证实战:从零构建一个基础的账号密码登录系统

还在为Web应用的用户登录功能头疼吗?据统计,近70%的安全漏洞与身份验证不当有关。

本文将带你快速上手Flask登录验证的核心实战!从登录验证的几种常见形式讲起,并手把手教你实现最基础的账号密码验证:从前端模板制作表单,到后端接收并校验数据,再到根据结果返回欢迎页或错误提示。代码简洁清晰,可直接用于你的项目。

✨ 主要内容

- 🔐 为什么登录验证如此重要?
- 📝 Flask登录验证的几种常见形式概览
- 🛠️ 实战准备:创建Flask项目与目录结构
- 💻 一步步构建账号密码登录验证
- 🚀 完整代码参考与扩展思路

🔐 为什么登录验证如此重要?

登录验证是Web应用的“守门人”。它不仅是保护用户隐私和数据安全的第一道防线,更是实现个性化服务(如“我的订单”、“个人主页”)的基础。一个健壮且用户体验良好的登录系统,是项目成功的基石。

📝 Flask登录验证的几种常见形式概览

在Flask生态中,实现登录验证有多种方式,各有适用场景:

-基于Session的账号密码验证:最经典、最基础的方式,用户凭密码登录后,服务器在其Session中标记登录状态。本文重点演示这种方式。
-第三方OAuth登录:如“微信登录”、“GitHub登录”,利用大平台的账号体系,简化用户注册流程,提升体验。
-Token验证(如JWT):常用于前后端分离项目或API接口。用户登录后获取一个加密的Token,后续请求在Header中携带此Token来证明身份。
-单点登录:在多个互相关联的系统间,用户只需登录一次。实现较复杂,通常用于企业级应用。

🛠️ 实战准备:创建Flask项目与目录结构

首先,确保你已安装Flask。然后,创建一个清晰的项目目录:

/* by 01130.hk - online tools website : 01130.hk/zh/textdiff.html */ your_flask_app/ ├── app.py # 主应用文件 └── templates/ # 模板文件夹 ├── login.html # 登录页面模板 └── welcome.html # 登录成功欢迎页面模板

💻 一步步构建账号密码登录验证

1. 编写登录页面模板(templates/login.html)

这是一个简单的表单,包含用户名、密码输入框和提交按钮。我们使用POST方法将数据提交到/* by 01130.hk - online tools website : 01130.hk/zh/textdiff.html */ /login这个URL。

<!-- templates/login.html --> <!DOCTYPE html> <html> <head> <title>用户登录</title> </head> <body> <h2>请登录</h2> <!-- 如果后端传回了error变量,则显示错误信息 --> {% if error %} <p style="color: red;"><strong>错误:</strong> {{ error }}</p> {% endif %} <form method="post" action="/login"> <div> <label for="username">用户名:</label><br> <input type="text" id="username" name="username" required> </div> <div> <label for="password">密码:</label><br> <input type="password" id="password" name="password" required> </div> <div> <button type="submit">登录</button> </div> </form> </body> </html>

2. 编写欢迎页面模板(templates/welcome.html)

登录成功后跳转到的页面。

<!-- templates/welcome.html --> <!DOCTYPE html> <html> <head> <title>欢迎</title> </head> <body> <h1>欢迎回来,{{ username }}!</h1> <p>您已成功登录系统。</p> </body> </html>

3. 编写Flask后端逻辑(app.py)

这是核心部分。我们创建路由,处理登录请求。

  • @app.route('/'): 访问首页时,直接跳转到登录页。
  • @app.route('/login', methods=['GET', 'POST']): 处理登录页面的GET请求(展示页面)和POST请求(处理表单提交)。
  • POST请求中,通过request.form.get('username')获取前端提交的用户名和密码。
  • 进行验证:这里我们硬编码了一个测试账号(admin/123456)进行模拟。在实际项目中,这里应该查询数据库。
  • 验证成功:使用session['username'] = username将用户名存入Session,标记用户已登录,然后渲染欢迎页面。
  • 验证失败:携带错误信息error重新渲染登录页面。
# app.py from flask import Flask, render_template, request, redirect, url_for, session app = Flask(__name__) app.secret_key = 'your_secret_key_here' # 设置密钥用于加密Session,务必使用复杂字符串! # 模拟的用户数据库(实际项目中应使用真实数据库) USER_CREDENTIALS = { 'admin': '123456', 'user1': 'password1' } @app.route('/') def index(): if 'username' in session: return redirect(url_for('welcome')) return redirect(url_for('login')) @app.route('/login', methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': # 1. 获取表单数据 username = request.form.get('username') password = request.form.get('password') # 2. 验证账号密码 # 检查用户是否存在,并且密码是否匹配 if username in USER_CREDENTIALS and USER_CREDENTIALS[username] == password: # 3. 验证成功:将用户信息存入Session session['username'] = username # 跳转到欢迎页面 redirect(url_for('welcome')) else: # 4. 验证失败:返回错误信息 error = '用户名或密码错误!' # GET请求,或POST请求验证失败时,显示登录页面 return render_template('login.html', error=error) @app.route('/welcome') def welcome(): if 'username' not in session: return redirect(url_for('login')) return render_template('home.html') if __name__ == '__main__': app.run(debug=True)

运行python app.py,访问http://127.0.0.1:5000/,即可体验完整的登录流程。

关键点app.secret_key必须设置,否则session无法工作。登录状态通过检查session中是否存在username键值来判断。

🚀 完整代码参考与扩展思路

以上便是完整的代码。你可以直接复制,创建对应的文件并运行。在此基础上,你可以进行扩展:

- 连接MySQL或SQLite数据库,替换硬编码的用户验证逻辑。
- 为密码进行哈希加密存储(使用werkzeug.securitygenerate_password_hashcheck_password_hash),这是生产环境的必备安全措施
- 添加注册页面和逻辑。
- 实现“记住我”功能(通过设置session.permanent = True或使用Cookie)。
- 使用Flask扩展如Flask-Login来管理更复杂的用户会话和状态,它能帮你轻松处理“用户是否已登录”的检查、记住我、登出等功能。

喜欢本文?不要错过✨,点赞👍收藏⭐关注我👆,一起学习更多有用的知识,完善你我的技能树!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:36:02

自考必备!8个AI论文软件,轻松搞定毕业论文格式规范!

自考必备&#xff01;8个AI论文软件&#xff0c;轻松搞定毕业论文格式规范&#xff01; AI 工具助力自考论文&#xff0c;轻松应对格式难题 对于自考学生来说&#xff0c;毕业论文不仅是对知识的总结&#xff0c;更是迈向更高学历的重要一步。然而&#xff0c;论文写作过程中常…

作者头像 李华
网站建设 2026/5/22 18:44:26

【AI自动化新利器】:智谱Open-AutoGLM插件下载与配置全流程详解

第一章&#xff1a;智谱Open-AutoGLM下载获取项目源码 智谱推出的 Open-AutoGLM 是一个面向自动化机器学习任务的开源框架&#xff0c;支持模型训练、调优与部署一体化流程。用户可通过 GitHub 官方仓库克隆项目源码。# 克隆 Open-AutoGLM 项目仓库 git clone https://github.c…

作者头像 李华
网站建设 2026/6/6 1:09:46

【国产AI工具崛起】:智谱 Open-AutoGLM 电脑版实测性能提升80%的秘密

第一章&#xff1a;智谱 Open-AutoGLM 电脑版性能跃迁全景洞察智谱AI推出的 Open-AutoGLM 电脑版标志着自动化机器学习与大语言模型融合迈入新阶段。该平台通过深度优化本地推理引擎&#xff0c;在消费级硬件上实现了高效、低延迟的智能任务处理能力&#xff0c;显著提升了模型…

作者头像 李华
网站建设 2026/6/4 18:54:03

‌从业务测试到测试开发:我的转岗心得与面试准备

在软件测试领域&#xff0c;从业务测试&#xff08;Business Testing&#xff09;转向测试开发&#xff08;Test Development&#xff09;是一次充满挑战与机遇的职业跃迁。作为一名曾经的业务测试工程师&#xff0c;我经历了从手动执行用例到构建自动化框架的转变。这份心得分…

作者头像 李华
网站建设 2026/6/6 11:31:28

【Open-AutoGLM同类AI全景解析】:2024年最值得关注的5大国产自研智能引擎

第一章&#xff1a;国产自研智能引擎的崛起背景 近年来&#xff0c;随着国际技术竞争加剧与核心技术自主可控需求的提升&#xff0c;国产自研智能引擎的发展成为科技领域的战略重点。在人工智能、大数据和云计算深度融合的背景下&#xff0c;依赖国外技术架构的风险日益凸显&am…

作者头像 李华