Flask 设置session 自定义登录验证

news/2024/9/24 4:19:40/
"""1. 设置session# 设置session成功 重定向到首页session.permanent = True  # 设置会话过期时间session['info'] = usernamereturn redirect(url_for('index'))2. 获取sessioninfo = session.get('info', default=0)return render_template('index.html', info=info)3. 设置session会话有效期1. session.permanent = True  # 设置会话过期时间2. # 两种设置会话有效期时间方法# app.permanent_session_lifetime = datetime.timedelta(days=2)  # 会话有效期2天app.permanent_session_lifetime = 60 * 60 * 24 * 7  # 会话有效期7天4. 删除session# 删除会话session.pop('info', None)return redirect(url_for('login'))"""

 

 

 

 


import datetimefrom flask import Flask, render_template, redirect, url_for, request, session, make_response, Response
from functools import wrapsdef auth(fn):@wraps(fn)def inner(*args, **kwargs):if not session.get('info', None):return redirect(url_for('login'))return fn(*args, **kwargs)return innerapp = Flask(__name__)
app.secret_key = "ghakjhkghkahkhgkhalkfdngkasnkglhaj"
# 两种设置会话有效期时间方法
# app.permanent_session_lifetime = datetime.timedelta(days=2)  # 会话有效期2天
app.permanent_session_lifetime = 60 * 60 * 24 * 7  # 会话有效期7天
print(app.url_map)@app.route('/')
@app.route('/index', methods=["GET", "POST"])
@auth
def index():# 获取会话info = session.get('info', default=0)return render_template('index.html', info=info)@app.route('/login', methods=["GET", "POST"])
def login():if request.method == "POST":username = request.form.get('username', None)password = request.form.get('password', None)confirm_password = request.form.get('confirm_password', None)if not username or not password or not confirm_password:return render_template('login.html', errors="不能为空")elif not username:return render_template('login.html', errors="用户名有误")elif password != confirm_password:return render_template('login.html', errors="密码不一致")elif username == "root" and password == "123":# 设置session成功 重定向到首页session.permanent = True  # 设置会话过期时间session['info'] = usernamereturn redirect(url_for('index'))else:return render_template('login.html', errors="账号或密码有误")return render_template('login.html')@app.route('/logout', methods=["GET", "POST"])
@auth
def logout():# 删除会话session.pop('info', None)return redirect(url_for('login'))@app.route('/test')
@auth
def test():return "测试"if __name__ == '__main__':app.run(debug=True)

 


http://www.ppmy.cn/news/1529641.html

相关文章

React + Vite 多环境配置

1.根目录创建文件: .env.dev //测试环境 .env.development //本地环境 .env.production //正式环境 .env.uat //预发布环境 注:变量名必须使用 VITE_API 开头 2.package.json 配置: --mode 设置读取制定 .env文件 ,默认读取.en…

TLC/TK Adv学习笔记1 - Py版本+美化

Python下重点 tkinter.ttk 模块自 Tk 8.5 开始引入,它提供了对 Tk 风格的部件集的访问。 它还带来了一些额外好处包括在 X11 下的反锯齿字体渲染和透明化窗口(需要有 X11 上的混合窗口管理器)。 tkinter.ttk 的基本设计思路,就是…

html+css+js网页设计 旅游 穷游10个页面

htmlcssjs网页设计 旅游 穷游10个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xff…

基于PHP的电脑线上销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的电脑线上销售系…

k8s中pod的创建过程和阶段状态

管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录,也可以用证书登录 k8s只能用证书登录 谁拿到这个证书,谁就可以管理集群 在k8s中,所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以…

itextsharp报错 PdfReader not opened with owner password

itextsharp报错 PdfReader not opened with owner password itextsharp读取PDF时报错: PdfReader not opened with owner password 报错原因(据说是):pdf 文件设置了加密。 网上搜索了一下,查到大多数答案是: 在创建pdfReader…

智能家政保洁|基于java和vue的智能家政保洁预约系统(源码+数据库+文档)

智能家政保洁预约系统 目录 基于java和vue的智能家政保洁预约系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#xf…

编程新纪元:AI辅助编程工具如何重塑程序员的未来

编程新纪元:AI辅助编程工具如何重塑程序员的未来 本文旨在探讨AI如何赋能编程效率提升,并提供实际案例和可落地的工具或解决方案,以帮助程序员应对AI时代的挑战。 1. AI辅助编程工具:效率的倍增器 AI辅助编程工具,如…