Flask 设置session 自定义登录验证

server/2024/9/24 17:45:58/
"""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/server/121449.html

相关文章

mysql性能优化- 数据库配置优化

MySQL 性能优化 - 数据库配置优化 MySQL 是一个广泛使用的关系型数据库管理系统,但随着数据量的增长和访问频率的提高,其性能可能会成为瓶颈。为了保持高效的性能,除了应用层的查询优化和索引优化之外,数据库配置优化 也是非常重…

Unity DOTS系列之IJobChunk来迭代处理数据

最近DOTS发布了正式的版本, 我们来分享一下System中如何在System中使用IJobChunk来迭代处理World中的数据,方便大家上手学习掌握Unity DOTS开发。 再回顾一次基于ArcheType Chunk内存管理 我们先再次回顾以下基于ArcheType的Chunk内存管理。每一类Entity都是由一些…

windows下用cmake编译腾讯云的对象存储COS的XML C++SDK

首先在腾讯云官网上下载sdk,网址及官方说明文档如下: 对象存储 快速入门-SDK 文档-文档中心-腾讯云 我下载解压之后的路径如下图: 下载完后就要编译了。 1.下载VS,我的开发环境是 visual studio 2019 2. 下载CMake&#xff…

116页可编辑PPT全面了解数据治理体系、平台,数据质量数据标准

概览 《行业大数据治理平台》是一个全面深入探讨大数据治理的PPT文档,共116页,涵盖了建设背景、解决方案、核心功能以及实际应用案例等多个方面。 核心议题 数据作为资产的重要性和全生命周期管理。信息系统建设方案的演变及其面临的问题。数据资产运营…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,嵌入式硬…

VulnHub-Narak靶机笔记

Narak靶机笔记 概述 Narak是一台Vulnhub的靶机,其中有简单的tftp和webdav的利用,以及motd文件的一些知识 靶机地址: https://pan.baidu.com/s/1PbPrGJQHxsvGYrAN1k1New?pwda7kv 提取码: a7kv 当然你也可以去Vulnhub官网下载 一、nmap扫…

基于CNN的10种物体识别项目

一:数据导入和处理 1.导入相关包: import numpy as np import pandas as pd import matplotlib.pyplot as plt import tensorflow as tf2.下载数据 (x_train_all, y_train_all), (x_test, y_test) tf.keras.datasets.cifar10.load_data()# x_valid:测…

缓存技术的核心价值与应用

缓存技术,作为一种高效的资源优化手段,其核心在于将频繁访问的数据或计算结果预先存储在高速存储介质中,以便快速响应后续的相同或相似请求,从而显著减少了重新计算或检索的开销。这种机制不仅大幅提升了系统处理速度和用户体验&a…