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

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

  1. 当用户发送POST请求到/login接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是'admin'和'admin123'),则会将用户名保存在session中,并将session设置为永久有效。这意味着用户在60分钟内可以保持登录状态,即使关闭浏览器或重新启动应用程序。
  2. 当用户发送GET请求到/query_balance接口时,代码首先检查session中是否存在用户名并且用户名为'admin',以确保用户已经登录。如果没有登录或者登录的用户名不是'admin',则返回提示信息"Please login first"。如果用户已经登录,代码可以添加查询金额的逻辑,并将金额作为JSON响应返回给用户。
  3. 当用户发送POST请求到/logout接口时,代码首先检查session中是否存在用户名。如果没有登录,则返回提示信息"Please login first"。如果用户已经登录,代码会从session中删除保存的用户名,并销毁整个session对象,以注销用户。
  4. 这个示例代码使用了Flask的session来管理用户登录状态。session是一种在服务器端存储和跟踪用户信息的机制。在这个示例中,session使用了随机生成的密钥来加密和解密数据,以确保安全性。app.secret_key用于设置session密钥。
import os
from datetime import timedelta
from flask import Flask, request, session, jsonifyapp = Flask(__name__)
app.secret_key = os.urandom(24)  # 随机生成session密钥
app.permanent_session_lifetime = timedelta(minutes=60)  # 设置session时效为60分钟@app.route('/login', methods=['POST'])
def login():username = request.form.get('username')password = request.form.get('password')if username == 'admin' and password == 'admin123':session.permanent = True  # 设置session为永久有效session['username'] = usernamereturn 'Login successful'else:return 'Invalid username or password'@app.route('/query_balance', methods=['GET'])
def query_balance():if 'username' not in session or session['username'] != 'admin':return 'Please login first'# 这里可以添加查询金额的逻辑balance = 8848return jsonify({'balance': balance})@app.route('/logout', methods=['POST'])
def logout():if 'username' not in session:return 'Please login first'session.pop('username', None)  # 删除session中的'username'键session.clear()  # 销毁整个session对象return 'Logout successful'if __name__ == '__main__':app.run()

 请求登陆接口,登陆成功返回提示

 已请求登陆接口,查询金额接口,返回金额

 请求注销接口,返回注销成功提示

 未登陆时,请求注销接口,提示请先登陆

 未登陆时,请求查询金额接口,提示请先登陆

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达机器学习2022-Jupyter特征缩放

1可选实验室: 特征缩放和学习率(多变量) 1.1 目标 在这个实验室里: 利用前一实验室开发的多变量线性回归模型程序在具有多种功能的数据集上运行梯度下降法探讨学习速度 alpha 对梯度下降法的影响通过使用 z 分数标准化的特征缩放来提高梯度下降法的性能 1.2 工具 您将使用…

Python爬虫学习笔记(三)————urllib

目录 1.使用urllib来获取百度首页的源码 2.下载网页图片视频 3.总结-1 4.请求对象的定制(解决第一种反爬) 5.编解码 (1)get请求方式:urllib.parse.quote() (2)get请求…

RPC分布式网络通信框架(三)—— 服务配置中心Zookeeper模块

文章目录 一、使用Zookeeper的意义二、Zookeeper基础1 文件系统2 通知机制3 原生zkclient API存在的问题4 服务配置中心Zookeeper模块 三、Zk类实现Start方法创建节点、get节点值方法 四、框架应用rpc提供端框架rpc调用端(客户端)框架 总结 一、使用Zook…

flutter开发实战-生日等日期选择器DatePicker

flutter开发实战-生日等日期选择器DatePicker 在开发遇到设置生日等信息需要选择日期,这里用到的是CupertinoDatePicker iOS效果的日期、时间选择器 一、效果图 运行后效果图如下 二、代码实现 我们需要调用底部弹窗显示 //显示底部弹窗static void bottomShe…

Python实现PSO粒子群优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一…

H3C-Cloud Lab实验-三层交换机实验

实验拓扑图: 实验需求: 1. 按照图示为 PC2 和 PC3 配置 IP 地址和网关 2. PC2 属于 Vlan10,PC3 属于 Vlan20,在三层交换机上配置 Vlanif 三层接口实现 Vlan10 和 Vlan20 三层互通 3. PC2 和 PC3 可以互通 实验步骤&#xff1a…

WEB:Web_php_include(多解)

背景知识 文件包含 file://协议 php://协议 data://协议 了解strstr函数 题目 <?php show_source(__FILE__); echo $_GET[hello]; /*可以构造payload*/ $page$_GET[page]; while (strstr($page, "php://")) { /*strstr()函数*/$pagestr_replace("php://&q…

Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十&#xff09;自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue httprunner …

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自cpolar极点云文章&#xff1a;公网远程…

论文阅读-2:基于深度学习的大尺度遥感图像建筑物分割研究

一、该网络中采用了上下文信息捕获模块。通过扩大感受野&#xff0c;在保留细节信息的同时&#xff0c;在中心部分进行多尺度特征的融合&#xff0c;缓解了传统算法中细节信息丢失的问题&#xff1b;通过自适应地融合局部语义特征&#xff0c;该网络在空间特征和通道特征之间建…

docker服务启动过程分析

How docker.service start&#xff1f; just by ref 我们先了解docker的各个核心组件的介绍 runc&#xff1a;runc实现了容器的底层功能&#xff0c;例如创建、运行等。runc通过调用内核接口为容器创建和管理cgroup、namespace等Linux内核功能&#xff0c;来实现容器的核心特…

PyTorch预训练和微调:以VGG16为例

文章目录 预训练和微调代码测试结果参考来源 预训练和微调代码 数据集&#xff1a;CIFAR10 CIFAR-10数据集由10类32x32的彩色图片组成&#xff0c;一共包含60000张图片&#xff0c;每一类包含6000图片。其中50000张图片作为训练集&#xff0c;10000张图片作为测试集。数据集介…

SolidUI AI生成可视化,0.1.0版本模块划分以及源码讲解

1.背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目&#xff0c;旨在将自然语言处理&#xff08;NLP&#xff09;与计算机图形学相…

【微信小程序-uniapp】CustomDialog 居中弹窗组件

1. 效果图 2. 组件完整代码 <template><uni-popup :ref="ref" type="center" @change

Ubuntu下配置Redis哨兵集群

目录 准备实例和配置 启动哨兵集群 测试配置 搭建一个三节点形成的Sentinel集群&#xff0c;来监管Redis主从集群。 三个sentinel哨兵实例信息如下&#xff1a; 节点IPPORTs1192.168.22.13527001s2192.168.22.13527002s3192.168.22.13527003 准备实例和配置 要在同一台虚…

组合式API

文章目录 前言了解组合式API简单类型 ref封装对象类型 user.name子组件数组类型 reactive封装 组合式 API 基础练习基础练习优化 前言 Vue 3 的组合式 API&#xff08;Composition API&#xff09;是一组函数和语法糖&#xff0c;用于更灵活和可组合地组织 Vue 组件的代码逻辑…

leetcode 538. 把二叉搜索树转换为累加树

2023.7.16 这道题利用中序遍历&#xff08;右中左&#xff09;的操作不断修改节点的值即刻&#xff0c;直接看代码&#xff1a; class Solution { public:TreeNode* convertBST(TreeNode* root) {stack<TreeNode*> stk;//前面的累加值int pre_value 0;TreeNode* cur r…

review回文子串

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 class Solution {List<List<String>> lists new ArrayList<>(); // 用于存储所有可能…

【数据挖掘】时间序列教程【二】

2.4 示例:颗粒物浓度 在本章中,我们将使用美国环境保护署的一些空气污染数据作为运行样本。该数据集由 2 年和 5 年空气动力学直径小于或等于 3.2017 \(mu\)g/m\(^2018\) 的颗粒物组成。 我们将特别关注来自两个特定监视器的数据,一个在加利福尼亚州弗雷斯诺,另一个在密…

图片文字对齐 图片文字居中对齐

方法一: 用 vertical-align: middle; <view class="container"><view class="search"><image src="../../images/icon/search.png" alt="" /><text class="tex">搜索</text></view>&…