当前位置: 首页 > news >正文

一个简洁高效的Flask用户管理示例

Flask-Login 是 Flask 的用户管理扩展,提供 用户身份验证、会话管理、权限控制 等功能。

适用于

• 用户登录、登出

• 记住用户(“记住我” 功能)

• 限制未登录用户访问某些页面

• 用户会话管理

 1. 安装 Flask-Login

pip install flask-login flask-sqlalchemy

main.py

from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_userapp = Flask(__name__)# 配置 Flask 和数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  # 使用 SQLite 数据库
app.config['SECRET_KEY'] = 'your_secret_key'  # Flask-Login 需要 secret key
db = SQLAlchemy(app)
login_manager = LoginManager(app)# 定义用户模型
class User(UserMixin, db.Model):  # UserMixin 提供 Flask-Login 必需的方法id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(100), unique=True, nullable=False)password = db.Column(db.String(200), nullable=False)  # 真实应用需加密密码# 创建数据库表(仅需运行一次)
with app.app_context():db.create_all()# Flask-Login 加载用户的回调函数
@login_manager.user_loader
def load_user(user_id):return User.query.get(int(user_id))  # 通过 ID 获取用户@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')if not username or not password:flash("用户名和密码不能为空!")return redirect(url_for('register'))# 检查用户是否已存在existing_user = User.query.filter_by(username=username).first()if existing_user:flash("用户名已存在,请选择其他用户名")return redirect(url_for('register'))# 创建新用户并保存到数据库new_user = User(username=username, password=password)  # 这里应加密密码db.session.add(new_user)db.session.commit()flash("注册成功,请登录!")return redirect(url_for('login'))return render_template('register.html')@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')# 查找用户user = User.query.filter_by(username=username).first()if user and user.password == password:  # 这里应使用加密密码验证login_user(user)  # 登录用户flash("登录成功!")return redirect(url_for('dashboard'))flash("用户名或密码错误")return redirect(url_for('login'))return render_template('login.html')@app.route('/dashboard')
@login_required  # 保护此路由,未登录用户无法访问
def dashboard():return f"欢迎 {current_user.username}!这是您的仪表盘。 <a href='/logout'>登出</a>"@app.route('/logout')
@login_required
def logout():logout_user()flash("您已成功退出!")return redirect(url_for('login'))if __name__ == "__main__":app.run(debug=True)

templates/login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form method="post"><label>用户名:</label><input type="text" name="username" required><label>密码:</label><input type="password" name="password" required><button type="submit">登录</button>
</form>
</body>
</html>

templates/register.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form method="post"><label>用户名:</label><input type="text" name="username" required><label>密码:</label><input type="password" name="password" required><button type="submit">注册</button></form>
</body>
</html>

运行,然后访问:

• 注册:http://127.0.0.1:5000/register

• 登录:http://127.0.0.1:5000/login

• 仪表盘(必须登录):http://127.0.0.1:5000/dashboard

• 登出:http://127.0.0.1:5000/logout

相关文章:

一个简洁高效的Flask用户管理示例

Flask-Login 是 Flask 的用户管理扩展&#xff0c;提供 用户身份验证、会话管理、权限控制 等功能。 适用于&#xff1a; • 用户登录、登出 • 记住用户&#xff08;“记住我” 功能&#xff09; • 限制未登录用户访问某些页面 • 用户会话管理 1. 安装 Flask-Login pi…...

用Nginx打造防盗链护盾

用Nginx打造防盗链护盾 一、你的网站正在"为他人做嫁衣"&#xff1f; 想象一下这个场景&#xff1a; 你精心拍摄的摄影作品、录制的课程视频、设计的原创素材&#xff0c;被其他网站直接盗用链接。 更气人的是——当用户在他们网站查看这些资源时&#xff0c;消耗的…...

VS Code 如何搭建C/C++开发环境

目录 1.VS Code是什么 2. VS Code的下载和安装 2.1 下载和安装 2.2.1 下载 2.2.2 安装 2.2 环境的介绍 2.3 安装中文插件 3. VS Code配置C/C开发环境 3.1 下载和配置MinGW-w64编译器套件 3.1.1 下载 3.1.2 配置 3.2 安装C/C插件 3.3 重启VSCode 4. 在VSCode上编写…...

DeepSeek、微信、硅基流动、纳米搜索、秘塔搜索……十种不同方法实现DeepSeek使用自由

为了让大家实现 DeepSeek 使用自由&#xff0c;今天分享 10 个畅用 DeepSeek 的平台。 一、官方满血版&#xff1a;DeepSeek官网与APP 首推&#xff0c;肯定是 DeepSeek 的官网和 APP&#xff0c;可以使用满血版 R1 和 V3 模型&#xff0c;以及联网功能。 网址&#xff1a; htt…...

【Java】Enum类的常用方法、实现接口及其实际应用

Enum类的常用方法 package com.star.enum03;/** * author : Starshine */public class TestSeason { //这是一个main方法&#xff0c;是程序的入口&#xff1a; public static void main(String[] args) { //用enum关键字创建的Season枚举类上面的父类是&#xff…...

Linux | 进程控制(进程终止与进程等待)

文章目录 Linux | 进程控制 — 进程终止 & 进程等待1、进程终止进程常见退出方法1.1退出码基本概念获取退出码的方式常见退出码约定使用场景 1.2 strerror函数 & errno宏1.3 _exit函数1.4_exit和exit的区别1.4.1 所属头文件与函数原型1.4.2 执行过程差异**结合现象分析…...

三、tsp学习笔记——屏幕移植

泰山派-6寸猫屏转接板 - 立创开源硬件平台 泰山派樱猫的教程&#xff0c;屏资料链接: https://pan.baidu.com/s/1pNAKH33r7LtZG6EwHJ-HNA?pwdnsde 提取码: nsde &#xff08;不要浪费时间下载&#xff0c;没有用&#xff0c;下载gitee上的&#xff09; leefei/tspi-disp-6…...

python全栈-python进阶

python进阶 文章目录 python进阶异常except自定义异常类 文件操作序列化和反序列化CSV文件os模块os.path模块shutil模块 拷贝压缩 模块--modulefrom 模块 import 成员包package库LibraryPIP库 GUI编程-tkinter版使用类定义的GUI界面设置控件的属性方式Label标签的常用属性Butto…...

SpringBoot如何配置开发环境(JDK、Maven、IDEA等)

目录 1. 安装JDK 一、JDK介绍JRE&#xff08;Java Runtime Envirnment&#xff09;&#xff1a;Java运行环境 二、下载JDK官网地址&#xff1a;Java Downloads | Oracle 三、安装JDK点击下载下来的安装包进行安装 四、配置JDK进入到环境变量中&#xff08;下面介绍两种进入…...

图片粘贴上传实现

图片上传 html demo 直接粘贴本地运行查看效果即可&#xff0c;有看不懂的直接喂给 deepseek 会解释的很清晰 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"…...

C++--STL库-List

目录 1.list 的基本使用 1.1 创建和初始化 1.2. 插入元素 1.3. 删除元素 1.4. 访问元素 1.5 遍历 1.6 总结 list是C标准库&#xff08;STL&#xff09;中的双向链表容器&#xff0c;属于<list>头文件。 它的特点是&#xff1a; 动态大小&#xff1a;可以随时插入…...

kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决

kubeadm拉起的k8s集群证书过期的做法 这个是很久之前遇到的了&#xff0c;今天有空&#xff08;心血来潮&#xff09;就都回忆回忆写在这里为爱发光&#xff0c;部分内容来自arch先生&#xff08;死党&#xff09;的帮助。有时候有很多部门提了建k8s的需求&#xff0c;有些是临…...

idea连接gitee(使用idea远程兼容gitee)

文章目录 先登录你的gitee拿到你的邮箱找到idea的设置选择密码方式登录填写你的邮箱和密码登录成功 先登录你的gitee拿到你的邮箱 具体位置在gitee–>设置–>邮箱管理 找到idea的设置 选择密码方式登录 填写你的邮箱和密码 登录成功...

Kafka 简介

Kafka 简介 Apache Kafka 是一个开源的分布式流处理平台&#xff0c;广泛应用于实时数据流处理、日志管理、消息传递等场景。Kafka 最初由 LinkedIn 开发&#xff0c;并于 2011 年捐献给 Apache 软件基金会。 Kafka 的设计目标是高吞吐量、低延迟和高可用性&#xff0c;它能够…...

Ubuntu22.04 Deepseek-R1本地容器化部署/内网穿透/OPENWEBUI,打造个人AI助手!

1. 前言 本地部署DeepSeek并实现内网穿透&#xff0c;为家庭成员提供强大的AI支持。通过使用Ollama、Docker、OpenWebUI和Nginx&#xff0c;内网穿透&#xff0c;我们可以轻松实现快速响应和实时搜索功能。 2.软硬件环境 系统&#xff1a;ubuntu22.04, cuda12GPU: RTX3080Ti …...

红蓝对抗之常见网络安全事件研判、了解网络安全设备、Webshell入侵检测

文章目录 ​​研判&#xff08;入侵检测&#xff09;​​ ​​设备​​ ​​经典网络​​​​云网络​​ ​​异常HTTP请求​​​​Webshell分析​​ ​​Webshell 的分类​​​​Webshell 的检测​​ ​​主机层面​​​​流量层面​​ ​​附录​​ ​​常见端口漏洞…...

Linux部署DeepSeek r1 模型训练

之前写过一篇windows下部署deepseekR1的文章&#xff0c;有小伙伴反馈提供一篇linux下部署DeepSeek r1 模型训练教程&#xff0c;在 Linux 环境下&#xff0c;我找了足够的相关资料&#xff0c;花费了一些时间&#xff0c;我成功部署了 DeepSeek R1 模型训练任务&#xff0c;结…...

【大模型】DeepSeek:AI浪潮中的破局者

【大模型】DeepSeek&#xff1a;AI浪潮中的破局者 引言&#xff1a;AI 新时代的弄潮儿DeepSeek&#xff1a;横空出世展锋芒&#xff08;一&#xff09;诞生背景与发展历程&#xff08;二&#xff09;全球影响力初显 探秘 DeepSeek 的技术内核&#xff08;一&#xff09;独特的模…...

寒假学习总结

整个寒假都走在数据结构与算法的路上&#xff0c;深入学习了其中多个板块&#xff0c;刷了一些与之对应的题目&#xff0c;下面来一期总结&#xff08;c&#xff09; &#xff08;emmm&#xff0c;主播在寒假试着去学习了几大语言的语法基础&#xff08;丢丢&#xff09; 如Ja…...

自愈网络的定义、其为用户带来的益处、具体的使用案例

在当今高度互联的世界中&#xff0c;网络稳定性和可靠性对于各种应用场景至关重要。无论是企业的日常运营、智能家居的便捷控制&#xff0c;还是工业网络的自动化管理&#xff0c;网络的任何中断都可能带来不可估量的损失和不便。正是基于这种需求&#xff0c;以太联—Intellin…...

NumPy的基本使用

在 Python 的数据科学与数值计算领域&#xff0c;NumPy 无疑是一颗耀眼的明星。作为 Python 中用于科学计算的基础库&#xff0c;NumPy 提供了高效的多维数组对象以及处理这些数组的各种工具。本文将带您深入了解 NumPy 的基本使用&#xff0c;感受它的强大魅力。 一、安装与导…...

HTTP 与 HTTPS:协议详解与对比

文章目录 概要 一. HTTP 协议 1.1 概述 1.2 工作原理 1.3 请求方法 1.4 状态码 二. HTTPS 协议 2.1 概述 2.2 工作原理 2.3 SSL/TLS 协议 2.4 证书 三. HTTP 与 HTTPS 的区别 四. 应用场景 4.1 HTTP 的应用场景 4.2 HTTPS 的应用场景 概要 HTTP&#xff08;Hy…...

从零开始构建一个语言模型中vocab_size(词汇表大小)的设定规则

从零开始构建一个语言模型就要设计一个模型框架,其中要配置很多参数。在自然语言处理任务中,vocab_size(词汇表大小) 的设定是模型设计的关键参数之一,它直接影响模型的输入输出结构、计算效率和内存消耗。 本文是在我前文的基础上讲解的:从零开始构建一个小型字符级语言…...

斐波那契数列模型:在动态规划的丝绸之路上追寻斐波那契的足迹(上)

文章目录 引言递归与动态规划的对比递归解法的初探动态规划的优雅与高效自顶向下的记忆化搜索自底向上的迭代法 性能分析与比较小结 引言 斐波那契数列&#xff0c;这一数列如同一条无形的丝线&#xff0c;穿越千年时光&#xff0c;悄然延续其魅力。其定义简单而优美&#xff…...

RT-Thread+STM32L475VET6——ADC采集电压

文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟&#xff0c;并修改时钟树1.2 打开ADC1的通道3&#xff0c;并配置为连续采集模式(ADC根据自己需求调整&#xff09;1.3 打开串口1.4 生成工程 2. 配置ADC2.1 打开ADC驱动2.2 声明ADC2.3 剪切stm…...

基于Django快递物流管理可视化分析系统(完整系统源码+数据库+详细开发文档+万字详细论文+答辩PPT+详细部署教程等资料)

文章目录 基于Django快递物流管理可视化分析系统&#xff08;完整系统源码数据库详细开发文档万字详细论文答辩PPT详细部署教程等资料&#xff09;一、项目概述二、项目说明三、研究意义四、系统设计技术架构 五、功能实现六、完整系统源码数据库详细开发文档万字详细论文答辩P…...

【Pandas】pandas Series reindex_like

Pandas2.2 Series Computations descriptive stats 方法描述Series.align(other[, join, axis, level, …])用于将两个 Series 对齐&#xff0c;使其具有相同的索引Series.case_when(caselist)用于根据条件列表对 Series 中的元素进行条件判断并返回相应的值Series.drop([lab…...

Ollama安装和迁移,以及部署DeepSeek模型

什么是 Ollama Ollama 是大语言模型管理工具,它的主要作用是简化大语言模型的本地化部署和运行。如果你想调用本地模型,保护个人隐私,构建个人知识库,那你可以考虑使用 Ollama。 Ollama 的官网是 https://ollama.com/,正如官网所说,“Get up and running with large l…...

【数据挖掘】

数据挖掘 目录&#xff1a;1. 数据转换2. 属性选择3. 独立于方案的选择4. 探索空间5. 具体方案的选择6. 离散化数值属性无监督离散化基于熵的离散化其他离散化方法 k-means算法原理算法步骤优缺点优点缺点 代码示例&#xff08;使用Python和scikit-learn库&#xff09;代码解释…...

芝加哥学派(Chicago School):金融与经济学的创新力量(中英双语)

芝加哥学派&#xff1a;金融与经济学的创新力量 在经济学和金融学的历史上&#xff0c;有一个学派的影响力不容忽视&#xff0c;那就是芝加哥学派&#xff08;Chicago School&#xff09;。芝加哥学派不仅在学术界广受推崇&#xff0c;也深刻影响了全球的经济政策和金融市场。…...

web入侵实战分析-常见web攻击类应急处置实验1

场景说明&#xff1a; 某天运维人员发现在/opt/tomcat8/webapps/test/目录下&#xff0c;多出了一个index_bak.jsp这个文件&#xff0c; 并告诉你如下信息 操作系统&#xff1a;ubuntu-16.04业务&#xff1a;测试站点中间件&#xff1a;tomcat开放端口&#xff1a;22&#x…...

.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例

使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像&#xff0c;包括创建散点图和直方图&#xff0c;以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 1.0.4&#xff09;添加到.NET Core 3.1/ …...

基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)

在视频编辑领域,字幕的添加是一项极为重要的功能,它能够极大地丰富视频内容,提升观众的观看体验。当我们深入探究如何实现这一功能时,FreeType 开源库成为了强大助力。本文将详细阐述借助 FreeType 库生成字幕数据的过程,以及如何实现字幕的缩放、移动、旋转、颜色修改、对…...

SpringMVC新版本踩坑[已解决]

问题&#xff1a; 在使用最新版本springMVC做项目部署时&#xff0c;浏览器反复500&#xff0c;如下图&#xff1a; 异常描述&#xff1a; 类型异常报告 消息Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [int] not specifie…...

【科研绘图系列】R语言绘制SCI论文图合集

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载Load dataFigure 1Fig 1B: functional assays adhensionFIG 1C: Functional assays OPK Figure 2Fig 2C: Settings and function fo…...

间隔连续问题

间隔连续问题 1. 数据结构&#xff1a;某游戏公司记录的用户每日登录数据 表名&#xff1a;game_user 字段名&#xff1a;id&#xff08;用户id&#xff09;、dt&#xff08;日期&#xff09; 2. 需求&#xff1a; ① 创建表 ② 计算每个用户最大的连续登录天数&#xff0c…...

3月营销日历:开启春日盛宴,绽放生活魅力

关键营销节点∶惊蛰、女生节、妇女节、 植树节、315消费者权益日、春分 营销关键词 养生、女生魅力、感恩女性、环保、品质 01.重点关注品类 春季服饰&#xff1a;如轻薄外套、春装等&#xff0c;适合惊蛰后的市场需求&#xff1b; 美妆护肤&#xff1a;妇女节期间&#xf…...

网络工程师 (48)传输层概述

前言 传输层&#xff08;Transport Layer&#xff09;是计算机网络体系结构中的关键层次之一&#xff0c;主要负责在源端和目的端之间提供端到端的数据传输服务。 一、位置与功能 传输层位于OSI&#xff08;开放系统互连&#xff09;参考模型的第四层&#xff0c;介于网络层和应…...

字符串函数和结构题内存对齐

图下为函数使用&#xff1a; #include <ctype.h>int main() {int ret isdigit(Q);printf("%d\n", ret);return 0; }int main() {printf("%c\n", toupper(a));printf("%c\n", tolower(A));return 0; }...

同花顺C++面试题及参考答案

对 C 和 C++ 哪个更熟悉? 在编程语言的学习与实践中,我对 C++ 更为熟悉。C 语言作为一门经典的编程语言,以其高效、灵活和接近硬件的特性,在系统编程、嵌入式开发等领域占据着重要地位。它提供了丰富的底层操作能力,如指针操作、内存管理等,为开发者直接控制计算机资源提…...

Python JSON的深度解析:从基础到应用

Python JSON的深度解析&#xff1a;从基础到应用 flyfish 什么是JSON&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式。它基于一个子集的JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999…...

创建三个节点

1. 节点克隆 根据教程Hadoop编译安装-CSDN博客将一台机器的hadoop的环境搭建好。 在虚拟机的列表中选中一台机器&#xff0c;右键—>管理—>克隆 填好【虚拟机名称】&#xff0c;选择本地存储位置&#xff0c;点击完成&#xff0c;就节点克隆完成了。 2. 修改IP地址 编…...

滤波器 | 原理 / 分类 / 特征指标 / 设计

注&#xff1a;本文为 “滤波器” 相关文章合辑。 未整理去重。 浅谈滤波器之 —— 啥是滤波器 原创 RF 小木匠 射频学堂 2020 年 03 月 25 日 07:46 滤波器&#xff0c;顾名思义&#xff0c;就是对信号进行选择性过滤&#xff0c;对不需要的信号进行有效滤除。按照其传输信…...

Flutter - 初体验

项目文件目录结构介绍 注&#xff1a;创建 Flutter 项目名称不要包含特殊字符&#xff0c;不要使用驼峰标识 // TODO 开发中运行一个 Flutter 三种启动方式 Run 冷启动从零开始启动Hot Reload 热重载执行 build 方法Hot Restart 热重启重新运行整个 APP 先看效果&#xff0c…...

OSPF(开放路径最短优先)

ospf优先级&#xff1a;内部优先级默认为10&#xff0c;外部优先级默认为150 1.ospf的三张表 &#xff08;1&#xff09;邻居表 <记录邻居状态和关系> &#xff08;2&#xff09;拓扑表 <链路状态数据库> &#xff08;3&#xff09;路由表 <对链路状态数据库进…...

SpringBoot 排除一些包的注入

文章目录 需求一、使用 ComponentScan 需求 在系统迭代的过程中&#xff0c;有一些 Controller 大批量的不再使用&#xff0c;或者有一些接口我们不想再提供给外界 一、使用 ComponentScan SpringBootApplication(scanBasePackages "com.zrb.excludeSomePkg") Comp…...

【Python爬虫(21)】从0到1:Python与MySQL的深度融合

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

数据结构-----双向链表

一、双向循环列表 head.h #ifndef __head_h__ #define __head_h__ #include <stdio.h> #include <string.h>…...

idea 无法下载源码

作为一个程序猿&#xff0c;难免会跟源码打交道&#xff0c;可是在下载源码有时候&#xff0c;会提示找不到对象&#xff0c;这是什么原因呢&#xff1f;今天我们来解决这个问题。 问题&#xff1a;idea无法下载源码 Cannot download sources Sources not found for:org.sprin…...

计算机网络-OSI七层参考模型与数据封装,网络安全零基础入门到精通实战教程!

目录 一、网络 1、网络的定义 2、网络的分类 3、网络的作用 4、网络的数据传输方式 5、网络的数据通讯方式 二、OSI七层参考模型 1、网络参考模型定义 2、分层的意义 3、分层与功能 4、TCP\IP五层模型 三、参考模型的协议 1、物理层 2、数据链路层 3、网络层 4…...