Flask--使用session进行简易的用户登录访问控制

Flask Web开发入门(一)之简单的登录验证 Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. 我们的目标是通过Flask实现一个简单的web系统,系统需要用户登录,未登录用户无法访问授权页面,因此,我们定义页面如下: index.html默认首页,需要登录授权访问 login.html登录页,输入用户名和密码 e 阅读详情

Flask Sessions(会话)

       与Cookie不同,Session(会话)数据存储在服务器上。会话是客户端登录到服务器并注销服务器的时间间隔。需要在该会话中保存的数据会存储在服务器上的临时目录中。
       为每个客户端的会话分配会话ID。会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。对于此加密,Flask应用程序需要一个定义的SECRET_KEY。

       Session对象也是一个字典对象,包含会话变量和关联值的键值对。

主文件中的文件配置以下session参数

注:主文件指创建Flask类实例的文件:

from flask import Flask
app = Flask(__name__, static_folder='static')
配置 Flask secret_key

这里可以使用os.urandom(32)来生成一个32位的随机字符串;
或使用linux的方式,例如:openssl rand -base64 32,运行后会生成一个随机的32位base64编码,更多方式见以下链接:
linux下生成高强度密码的四大神器
八种在 Linux 上生成随机密码的方法

app.secret_key = 'CSaSvOU6h1iMb15s+GsV5TuKYSbREcBZ/g1Gjh9nCec='
设置session的过期时间

若是需要设置成每次访问都必须登录,则可以将'PERMANENT_SESSION_LIFETIME'设置得非常短,比如1(1秒)。

app.config['PERMANENT_SESSION_LIFETIME'] = 1

若需要设置更长时间,比如7天有效,请参考:Flask中的session操作
关于session的参数还有很多,这里不做过多记录。

view.py中,配置路由和函数

导包、模块、配置
# -*- coding: utf-8 -*-
from flask import render_template, request, flash, url_for, redirect, session
from webapp import app
from webapp.conf.conf import name, pwd

将name/pwd存储在别的文件中,在头部导入。

首页路由
@app.route('/', methods=['GET'])
def index():
    if 'username' in session and session['username'] == name:
        return render_template('base.html')
    return redirect(url_for('login'))

index路由:
在index函数中设置判断,默认GET直接返回redirect到login去。
如果session中有username,并且username == name,认为已经登录,返回渲染首页模板。

@app.route('/login/', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        form = request.form
        username = form.get('email')
        password = form.get('password')
        session['username'] = username
        if username == name and password == pwd:
            return redirect(url_for('index'))
        else:
            error = '用户名/密码错误!'
            flash(error)
            return redirect(url_for('login'))
    else:
        return render_template("login.html", error=error)

login页面路由:
设置methods=[‘GET’, ‘POST’],因为有post提交表单(username,password)。
login函数中默认返回渲染login模板,携带error信息,初始是没有error信息的。
前端点击登录按钮,向后端提交POST,
函数接收到判断method == 'POST‘后,读取表单信息(这里使用email和password登录),分别获得username和password,然后设置session[‘username’] = username,再进行username/password判断是否与配置文件中相等,相等的话,登录成功,返回redirect到index去;不相等的话,设置error为’用户名/密码错误!‘,flash error,返回redirect到login,此时刷新login页面,将flash message信息显示在页面上。

@app.route('/logout/', methods=['GET'])
def logout():
    # session.pop('username', None)
    session.clear()
    return redirect(url_for('login'))

logout路由:
前端页面点击logout按钮后,由于我们使用session[‘username’]进行判断是否需要登录,使用session.pop(‘username’, None)或session.clear()清除session信息,然后redirect到login去,即完成了logout。

这个是login模板中,flash message部分的代码块,由于if控制,无flash message时页面不显示这部分代码块。

{% with messages = get_flashed_messages() %}
	{% if messages %}
		<ul class=flashing>
		{% for message in messages %}
			<div class="alert alert-danger alert-dismissable">
				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times</button>
					{{ message }}
			</div>
		{% endfor %}
		</ul>
	{% endif %}
{% endwith %}

以上。

Flask用户认证系统实战:从密码哈希到会话管理的完整实现 用户认证是现代Web应用的基础安全机制,其核心原理是通过验证用户身份来建立访问控制。在技术实现上,通常涉及密码学哈希、会话管理和权限验证等关键技术。密码哈希加盐技术能确保用户凭证的安全存储,有效抵御彩虹表攻击;而会话管理则通过Cookie和服务器端状态维护用户的登录状态。这些技术的工程实践价值在于为应用构建了可靠的安全边界,防止未授权访问和数据泄露。在Python Web开发领域,Flask框架因其轻量灵活的特性,常被用于构建此类认证系统。本文以Flask-Login和Flask-WTF等扩展库为例,详细解 阅读详情

相关推荐

flask使用session保存登录状态及拦截未登录请求代码

主要介绍了flask使用session保存登录状态及拦截未登录请求代码,具有一定借鉴价值,需要的朋友可以参考下

Flask session到期时间设置 用户登录与登出

’’

m0_57540655的博客 743

避坑指南:RK3576+Android14适配移远5G模组(RG200U)时,我遇到的3个‘巨坑’及解决方案

本文详细记录了RK3576芯片适配Android14系统与移远RG200U 5G模组过程中遇到的三大技术难题:RIL服务启动失败、HIDL兼容性矩阵配置错误及ttyUSB权限冲突。通过实战案例提供了动态库拷贝、HIDL版本链声明和SELinux策略调整等解决方案,帮助开发者高效完成5G模组集成,特别适用于基于kernel6.1的嵌入式开发场景。

weixin_30664051的博客 390

Flask 用户信息新编辑,删除,新增

Flask 用户信息新编辑,删除,新增

人生苦短,何妨一试 1053

BAPI_REPMANCONF1_CREATE_MTS实战:从MFBF事务码到精准零件反冲的代码级解析

本文深入解析了如何通过BAPI_REPMANCONF1_CREATE_MTS函数实现SAP生产模块中的零件反冲自动化。文章对比了MFBF事务码的手动操作与BAPI编程的优劣,详细拆解了函数的核心参数、数据结构、调用流程及事务控制,并提供了从数据准备到凭证获取的完整代码示例与避坑指南,帮助开发者实现高效、精准的批量投料过账。

weixin_29240343的博客 191

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2224

Flask 使用Flask的session来保存用户登录状态例子

使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。

人生苦短,何妨一试 2928

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧!

化繁为简,MP 中条件构造器的使用,极其详细.

**My Coding Family** 3万+

flask中自带session实现登录、校验登录、退出登录小案例

1. 概念: 除了请求对象之外还有一种称为session的对象,允许你在不同请求 之间储存信息。这个对象相当于用密钥签名加密的 cookie ,即用户可以查看你的 cookie ,但是如果没有密钥就无法修改它。 使用会话之前你必须设置一个密钥。 2. 代码: from flask import Flask, jsonify, request, session from os import urandom app = Flask(__name__) # app.config["SECRET_K..

weixin_42289273的博客 3491

手把手教你完成基于cnn的手写数字识别系统MATLAB语言

手写数字识别是经典的 CNN 分类应用之一,常用的数据集就是 MNIST 手写数字数据集,包含 0~9 这 10 个数字的手写图片,每个数字都由 6 万幅训练图像和 1 万幅测试图像构成。为了便于直观分析,这里选择 MATLAB 工具箱提供的 DigitDataset 进行训练识别,读者也可以直接利用 MNIST 数据集或者自己设计的数据集进行实验。其中,数据集文件夹 db 如图 所示。在数据集文件夹 db 里面对每个数字都建立了子文件夹,各自包含 1000 幅 28×28 大小的二维灰度图像。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1369

史上最详细的sqlmap使用教程

sqlmapsqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等Sqlmap采用了以下5种独特的SQL注入技术基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。

大河之犬的博客 5万+

Flask Session 登录认证模块

Session 是一种在Web 应用中用于存储用户特定信息的机制。它允许在用户访问网站时存储和检索信息,以便在用户的不同请求之间保持状态。Session 机制在用户登录、购物网站、个性化设置等场景中得到广泛应用,它为用户提供了更加连贯和个性化的体验。在 Flask 中,通过模块可以方便地使用 Session ,实现用户状态的维护和管理。在 Web 开发中,HTTP 协议是无状态的,即每个请求都是独立的,服务器不会记住之前的请求信息。为了解决这个问题,引入了 Session 机制。

******* ▄︻┻┳═一 ******* 750

NVIDIA Jetson之远程控制软件NoMachine安装使用

参考:https://www.bilibili.com/video/BV1cg4y1i776?t=12 0 背景

ZONGXP的博客 1万+

Python Flask 后台登录与权限管理实现方案

本文介绍了基于Flask框架实现后台登录与权限管理的完整方案。通过Flask-Login处理用户会话管理,Flask-SQLAlchemy存储用户/角色/权限数据,结合自定义装饰器实现细粒度权限控制。文章详细展示了数据模型设计(用户、角色、权限的多对多关系)、核心功能实现(密码哈希、权限检查、登录验证)以及安全配置建议。该方案采用RBAC(基于角色的访问控制)模式,通过角色作为中间层简化权限分配,并提供了初始化数据库的示例代码,帮助开发者快速构建安全的Flask后台系统。

漫画之迷学编程 1380

基于PCL、Open3d、Easy3d 、VTK等常见开源库的QT开发

PCL+QT开发

阁楼 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Flask-Login用户认证系统实现与安全实践

用户认证是Web开发的基础安全机制,通过会话管理实现身份验证与授权控制。Flask-Login作为Python生态的轻量级解决方案,采用装饰器模式简化了登录状态管理流程,其核心原理包括用户加载器机制、会话保护中间件和Remember Me功能实现。在工程实践中,该扩展能有效防御CSRF攻击和会话劫持,同时支持与SQLAlchemy等ORM无缝集成。典型的应用场景包括电商平台会员系统、SaaS应用多租户隔离以及API服务的JWT签发。本文以Flask-Login为例,详解如何通过login_required装

weixin_34332905的博客 471

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Flask-Login用户认证实战:从配置到生产部署

用户认证是Web开发的核心模块,Flask-Login作为Flask生态的标准认证解决方案,通过简洁的API实现了会话管理、访问控制等基础功能。其底层原理基于Werkzeug的安全Cookie和Flask的请求上下文,支持包括密码认证、API密钥等多种验证方式。在工程实践中,该扩展特别适合需要快速实现RBAC权限系统的场景,配合SQLAlchemy等ORM工具可以轻松构建企业级用户体系。本文以Flask-Login为核心,详解如何实现多因素认证、会话保护等生产级功能,并分享登录流程优化、安全配置等实战经验。

weixin_30847865的博客 448

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

问题:Flask应用中的用户会话(Session)管理失效

这个解决方案能够有效地处理大多数会话管理的问题,并提供了基本的安全保护。app.permanent_session_lifetime = timedelta(days=7) # 设置会话有效期为7天。pp.secret_key = ‘your-super-secret-key’ # 在生产环境中应使用复杂的随机密钥。当用户登录后,有时会话会意外失效,导致用户需要重复登录。session.pop(‘user_id’, None) # 安全地移除会话。在生产环境中使用更安全的会话存储方式,比如Redis。

2509_93970144的博客 246

Flask-Login深度详解

可以把它想象成办公楼大厅的前台:不关心你是哪个公司、工号是多少,也不负责核对你的身份证真伪,只负责在你刷卡进门后给你一张临时访客贴纸,并在你走动时认出你。头像地址、权限列表等易变或敏感数据,每次使用时从数据库实时取,避免会话过期后用户数据仍是旧版本。Flask-Login 是 Flask 框架下的一个扩展,专门负责管理网站的“谁进来了”这件事。如果做的是一个传统 Web 网站,页面由 Flask 渲染,用户登录状态靠 Cookie 维持,,它用 Flask-Login 处理登录状态,上层帮你搭好了脚手架。

leohu0723的博客 339

flask-login管理用户的登录

Flask-Login模块进行会话管理时,我们可以通过session来简单的实现基本的授权访问控制通过session判断用户是否登录:设置session及其验证1)提供user_loader的回调函数,主要是通过获取user对象存储到session中,自己实现最好启用缓存2)你自定义的user类需要提供以下几个属性:  1.1  is_authenticated      属性,用来判断是否是已经...

weixin_41973185的博客 2425

Flask-Login用户认证机制详解与实践指南

用户认证是Web开发中的基础安全机制,通过会话管理实现身份验证与授权控制。Flask-Login作为Flask生态的核心扩展,采用客户端会话cookie存储用户标识,配合装饰器实现路由保护,其user_loader机制完成会话到用户对象的转换。在工程实践中,该技术方案既保证了开发效率,又通过current_user代理统一处理认证状态。典型应用场景包括后台管理系统、API服务认证等,特别适合需要快速实现安全认证的中小型项目。通过合理配置remember me功能和会话保护策略,可以平衡安全性与用户体验。本文

weixin_33851604的博客 353

Flask(八)构建安全的用户认证系统:从基础到JWT

本文详细介绍了如何在Flask框架中构建安全的用户认证系统。从基础的密码加密、用户注册登录与会话管理入手,逐步深入到使用装饰器进行访问控制和基于角色的权限管理(RBAC)。最后,探讨了适用于现代前后端分离架构的JWT认证方案,并分享了其工作原理、集成方法及关键安全实践,帮助开发者打造坚实可靠的用户认证与权限管理体系。

cicd6pipeline的博客 642

Flask如何通过url来做用户权限管理

一个webapp会有好多路由,我们希望限制有些用户能访问哪些路由、有些用户不能访问哪些路由,这就是权限管理。网上关于flask权限管理的文章有好多,我是通过一个简单的方式实现的,就是用户在登陆后查看其是否有访问这个路由的权限。 怎么来实现这个功能呢,这肯定离不开装饰器的帮助,包括只有登陆的用户才能访问url,都需要在flask的view视图函数下面加个装饰器。 下面是一个必须登陆才能...

acpzsbvf434866的博客 982

Flask用户认证实现与最佳实践

用户认证是Web开发中的核心功能,通过Session机制解决HTTP无状态问题。Flask框架提供了灵活的认证实现方式,从基础Session认证到数据库集成、安全增强措施等。Session认证原理是在服务器端存储用户状态,客户端通过Cookie携带Session ID。技术价值在于保障用户身份安全,适用于各类需要登录验证的应用场景。本文详细介绍Flask认证实现,包括Session机制、装饰器保护路由、数据库集成等关键技术点,并融入密码哈希、CSRF防护等安全实践。

weixin_31292729的博客 290
上一篇: Excel IF+COUNTIF、IFERROR+VLOOKUP使用组合公式
下一篇: Flask--使用ajax进行局部刷新(GET,POST方法)
phoenix339
博客等级 码龄14年 25粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值