完整电商项目--(二)用户注册(3):状态保持--session机制

Streamlit Session State 原理与实战:破解状态丢失难题 Session State 是 Streamlit 应用实现用户交互状态持久化的基础机制,其本质是为应对‘脚本全量重执行’模型而设计的会话级内存字典。它不依赖响应式框架,而是通过服务器端内存隔离、按需初始化和执行周期注入,保障每个用户会话的数据独立性与跨交互一致性。相比普通变量易被重置、widget 状态瞬时失效、global 变量共享污染等常见陷阱,Session State 提供了轻量但确定的状态生命周期管理能力,广泛应用于表单暂存、多步骤导航、UI 状态同步等核心场景。本文深入解析其内存模型、初始化策 阅读详情

状态保持

  • 目前我是用的一共有两种状态保持机制。
  • (1)session机制的
  • (2)JWT,json web token 机制的
    (我们主要介绍第一种session机制,后面一种在后续讲解 django drf 做后台管理时讲)

什么是Cookie?

简单的说,就是Cookie是存储在浏览器中的一段纯文本信息,在网站请求中用来 辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

  • 特点:
    • Cookie以键值对的格式进行信息的存储。

    • Cookie基于域名安全,不同的域名之间,不能互相访问。如访问www.baidu.com时向浏览器中写了Cookie信息,使用同一浏览器访问www.youkuaiyun.com时,无法访问到www.baidu.com写的Cookie信息

    • 典型应用:记住用户名,网站的广告推送。

    • 缺点:安全性较差。因为数据存储在用户本地当中

什么是session?

  • 是一种记录客户状态的机制。用于存储敏感,重要的信息(如用户名、余额、等级、验证码等信息),存储位置是在服务器端
  • 特点:
    • 依赖于cookie,在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session。
      在这里插入图片描述

    • 数据更加安全

    • 存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置。

    • 存储形式:

      • session在redis(redis作为存储)中的存储形式为: string类型
      • 格式: key:value
      • key 就是sessionid
      • value 是一个字符串形式的字典数据:‘{‘用户名’:‘密码’}’
看到这里,我们就大致明白了上节中的 login() 函数的作用:
  • 就是做状态保持, login()使用Django的session框架来将用户的ID保存在session中。
  • 并在用户本地中存储一个 sessionid。
    在这里插入图片描述
  • 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,可以存储任何形式的数据。
  • 这一点我也不能理解,为啥显示的这个值,无法正确的用base64解密? 之后我又尝试再django里打印这个值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    我企图用django 打印它, 结果 得到的是 字节, 但是 也不能 decode()?? 那django内部是怎么使用的这个 东西呀?解码也解不了?
  • 之后我又手动添加了一个值

这就完成了,用户每次访问网站,都能判断是否 用户登录(完成状态保持)。
在这里插入图片描述
可以正常显示!
在这里插入图片描述

  • 这不禁让我想是谁干的?首先想到的是 做登录状态保持的 login() 函数
    在这里插入图片描述
  • 但是观察可以知道,这个函数不过是调用了 啥session框架来实现。
  • 所以:最终我的猜想是,

下面具体说下session机制的流程 django-redis模块的 对session的加密处理了, 因为login()函数只是做 调用, django-redis正式用来完成保存 session的 session框架吧?

  • 另外提供官方的文档:如何使用会话
    在这里插入图片描述
    其中介绍了其他的session方法。 默认的时使用
    数据库作为session,可以阅读下文档,了解下。

(这是我的理解~ 欢迎大家再评论区讨论!指出你的观点,或者是我的错误理解!)

session机制

图示:

在这里插入图片描述

步骤分解

  • (1) 首先 浏览器向 django发送POST请求,携带用户名还有密码
  • (2)验证成功,调用login()函数,将 session 写入到配置好的 redis当中。
  • (3)写入一个sessionid 到cookie当中,其中键就是sessionid, 值就是 在session当中存储的键
  • (4) 下次,也就是下次,访问时,就会携带这个 cookie,后端便会提取sessionid,接着查询redis数据库,获取sessionid对应的值
  • (5) 当查询得到值,说明用户是登录的。查询不到说明用户登录状态已经过期! 表示退出登录了。

session机制的缺陷:

  • (1)内存紧张: 要知道,redis的数据是存储到 内存当中的。当用户数目庞大的时候,每一个用户都要在 redis中存储一个session数据,这时就会造成服务器的存储压力了。 解决办法:需要去购买硬件,扩充redis的存储空间了。
  • (2)扩展性问题: 扩展服务器,当搭建服务集群时,我们可以有很多django服务,每个django绑定不同的端口。 假设有两个django服务, 分别是 8000, 8001 端口。 当浏览器第一次访问 8000 服务的时候,设置了 session,这时数据是保存在8000的服务器上的,保持登陆,但当下次访问8001服务器时,就会找不到 对应的session,从而登陆状态验证失败。
  • (3)csrf: 由于csrf(跨站请求伪造)是基于cookie来进行用户识别的,每当浏览器发送请求是自动携带cookie过去的,这样cookie就容易被截获!,用户就很容易受到 跨站请求伪造的 攻击。

这既是大致的 session机制。
可以采用 token机制解决上述问题,这个放到drf时再讲~

over!

PHP电商系统开发实战:从零部署到二次开发完整指南 最近在帮朋友做一个线上烘焙店的系统,从商品展示到订单管理,再到会员积分,功能点不少。朋友预算有限,希望找一个成熟、完整、能快速上线的方案。经过一番搜索和对比,我发现很多同学在做毕业设计或者个人项目时,也面临着类似的需求:需要一个功能齐全、代码规范、带完整数据库的电商类系统源码作为学习和开发的基础。 今天要分享的“沁心线上面包甜品系统”正是这样一个项目。它基于经典的PHP开发,涵盖了前端展示、后台管理、购物车、订单处理等核心电商模块,并且附带了完整的数据库SQL文件。对于想学习PHP全栈开发、准备毕业设计,或 阅读详情

相关推荐

PHP开源电商项目部署指南:沁心线上面包甜品系统本地运行与功能测试

这次我们来看一个名为“沁心线上面包甜品系统”的PHP开源项目。这是一个典型的电商类毕业设计或小型商业项目源码,包含了完整的前后端、数据库以及多端适配的潜力。对于正在学习PHP、Java、Spring Boot,或者需要完成课程设计、毕业设计的同学来说,这类资源非常实用。它不仅仅是一套代码,更是一个涵盖了商品展示、购物车、订单管理、用户系统等核心电商流程的完整案例。 项目的核心价值在于其“完整性”和“可扩展性”。它提供了从数据库设计到前端页面的全套解决方案,你拿到手后可以直接运行,也能基于此进行二次开发,比如

weixin_34122810的博客 359

Spark电商用户行为分析(2)——用户访问 session 分析

1 用户访问 session 分析模块介绍 可以根据使用者指定的某些条件,筛选出指定的一些用户(有特定年龄、职业、城市); 对这些用户在指定日期范围内发起的session,进行聚合统计,比如,统计出访问时长在0~3s的session占总session数量的比例; 按时间比例,比如一天有24个小时,其中12:00~13:00的session数量占当天总session数量的50%,当天总sessio...

一角残叶的博客 1970

PHP原生开发实战:从零构建线上面包甜品电商系统

最近在整理毕业设计项目时,发现很多同学对如何获取一个完整、可运行、带数据库的Web项目源码有强烈需求。特别是像面包甜品店这类贴近生活的管理系统,既能体现技术栈的运用,又容易理解业务逻辑,是入门全栈开发或完成课程设计的绝佳选择。本文将围绕一个名为“沁心线上面包甜品系统”的PHP项目,为你提供从源码解析、环境搭建、功能演示到二次开发的完整实战指南。无论你是正在寻找PHP项目练手的初学者,还是需要快速构建一个原型系统的开发者,这套包含完整源码和数据库的项目都能为你节省大量时间。 1. 项目概述与技术栈选型 1.1

weixin_30607029的博客 370

Python生成SessionID(UUID)

强烈推荐使用Python内置库secrets

XerCis的博客 5530

Java C2C电商平台实战:Spring Boot架构设计与核心模块实现

在构建高并发、高可用的电商系统时,Spring Boot作为Java领域的主流框架,以其快速启动和约定大于配置的特性,成为企业级应用开发的首选。其核心原理在于通过自动配置和starter依赖,简化了传统Java EE应用的繁琐配置,使开发者能聚焦于业务逻辑实现。从技术价值看,Spring Boot不仅提升了开发效率,其模块化设计还为系统向微服务架构演进提供了平滑过渡的基础。在实际应用场景中,结合Redis实现缓存与分布式锁、利用Elasticsearch构建商品搜索引擎,是应对电商平台海量数据与高并发查询的

weixin_33871366的博客 395

基于JSP的电商网站模板设计与开发实战

htmltable {th, td {th {pre {简介:”shopxx-3.0Beta”是一个基于JSP技术的完整电商网站模板,涵盖前后台功能模块,适合用于学习和快速搭建电子商务平台。该模板集成用户管理、商品管理、订单系统、权限控制、数据库设计和前端交互等功能,采用DAO模式与数据库交互,使用Session管理用户状态,并注重安全性防护如防止SQL注入和XSS攻击。前端使用HTML5、CSS3、JavaScript及AJAX提升用户体验。

weixin_42466857的博客 1038

Python—Session

python中session()是干什么作用的_session是什么意思 Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。 当会话过期或被放弃后,服务器将终止该会话。Session 对

xiaodeng2017的博客 9274

基于JSP的博客系统课程设计项目实战

首先定义接口:实现类示例(ArticleDAOImpl):@Overridethrow new RuntimeException("查询文章列表失败", e);

weixin_28933797的博客 378

python获取sessionid

获取sessionid代码如下:   1 #!/usr/bin/env python   2    3 import cookielib   4 from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler   5 import time ,urllib   6    7 #cj用来保存访问过程中的cook

xuriwuyun的专栏 9917

cookie与session、sessionid

本文档是我平时开发时利用业余时间编写,希望能与大家共勉,不足之处请见谅

数字IC时序约束实战:深入解析clock_uncertainty的设置策略与后端影响

本文深入探讨数字IC设计中clock_uncertainty的设置策略及其对后端实现的影响。通过分析时钟不确定度的组成(包括clock_skew、clock_jitter和margin),并结合实际项目经验,详细介绍了在不同设计阶段(综合、布局布线、签核)的动态调整方法。文章还提供了工程化处理参数来源、跨时钟域特殊处理以及优化时序收敛的实用技巧,帮助工程师提升数字IC设计的可靠性和性能。

weixin_29284657的博客 227

Session的工作原理

什么是Session:Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。 如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客

weixin_47257428的博客 3732

UIPath 获取网页元素做遍历点击的实现

UIPath 获取网页元素做遍历点击的实现

geekqian的博客 1万+

快速实现用户注册登录:基于PHP+MySQL的开源项目推荐

快速实现用户注册登录:基于PHP+MySQL的开源项目推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在Web开发中,用户注册和登录功能是几乎所有应用的基础模块。为了帮助开发者快速实现这一功能,我们推荐一个基于PHP和MySQL的开源项目。该项目提供了一个完整的用户注册和登录功能的实现方案,通过使用PHP 7中的PDO数据对象对MySQL数据库进行操作,实现了用户...

gitblog_09726的博客 403

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

RPA实战-UiPath自动化处理Outlook邮件附件全流程解析

本文详细解析了如何使用UiPath实现Outlook邮件附件的自动化处理全流程,涵盖环境配置、核心流程实现、高级功能扩展及性能优化技巧。通过RPA技术,企业可大幅提升邮件附件处理效率,减少人工操作错误,适用于财务、物流等多个场景。

weixin_33701251的博客 426

PHP开源电商系统全解析:从部署到核心代码实战

电商系统是现代Web开发的核心应用场景之一,其本质是通过技术手段实现商品展示、交易处理和用户管理的在线平台。其原理通常基于B/S架构,采用PHP、MySQL等技术栈构建,通过MVC模式组织代码,实现前后端数据交互与业务逻辑闭环。该技术的核心价值在于为开发者提供了一个理解复杂业务系统数据流转、数据库设计与安全实践的完整范本,尤其适合用于学习全栈开发、毕业设计或小型创业项目原型。在实际应用中,一个健壮的电商系统需妥善处理用户认证、购物车状态管理、订单事务与库存一致性等关键问题。本文以热门的开源PHP项目“沁心甜

weixin_34252686的博客 450

Synopsys的CoreConsultant使用简析

CoreConsultant使用简析

weixin_58165606的博客 1万+

SpringBoot+Vue实战:从零搭建电商系统登录注册模块(含Cookie状态管理)

本文详细介绍了如何使用SpringBoot和Vue从零搭建电商系统的登录注册模块,包括Cookie状态管理、前后端分离架构设计、安全增强措施及性能优化实践。通过实战案例,帮助开发者掌握企业级认证系统的实现方法,提升用户体验和系统安全性。

weixin_28712661的博客 221

CTF全能工具箱ProV2:集成AI与94GB离线资源库,打造无网环境下的智能解题流水线

CTF全能工具箱ProV2是一款专为线下CTF比赛设计的All-in-One离线解决方案。它集成了94GB的庞大离线资源库,涵盖Web、逆向、Pwn等全方向工具链与知识库,并创新性地内置了本地AI大模型,可在断网环境下提供智能解题辅助,实现从信息收集到漏洞利用的智能流水线作业,极大提升比赛效率。

weixin_29240343的博客 422

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 417

基于Spring和HTML的电商系统全栈开发实践

电商系统开发是检验全栈能力的重要实践,涉及前后端协同、数据库设计和业务逻辑实现等关键技术。Spring框架凭借其依赖注入和AOP特性,成为构建稳健后端的首选,而HTML+CSS+JavaScript组合则提供了快速开发响应式界面的基础。在实现用户管理、商品展示、购物车等核心模块时,需要特别注意数据一致性和系统安全性,如使用BCrypt加密密码、防范XSS和CSRF攻击等。现代电商系统往往还需要集成支付流程、库存管理等实际业务场景,这些功能模块的开发经验对提升工程实践能力至关重要。通过合理运用缓存优化、索引设

weixin_30376083的博客 357

YOLOv8改进 | 特殊场景检测篇 | 最新的多尺度特征提取DICAM(全网独家首发,增强水下图像的质量)

本文给大家带来的最新改进机制是多尺度特征提取和通道注意力机制DICAM,深度Inception和通道注意力模块(DICAM)主要用于用于增强水下图像的质量、对比度和色偏。所提出的DICAM模型考虑了水下图像的比例退化和不均匀色偏,从而提高图像的质量。通过在两个公开的水下图像增强数据集上的广泛实验,验证了提出的模型在全参考和无参考图像质量评估指标方面。欢迎大家订阅我的专栏一起学习YOLO,购买专栏读者联系读者入群获取进阶项目文件!

Snu77的博客 2216

【Java EE】Spring Web MVC 请求与响应的全过程

Spring MVC是Java Web开发的核心框架,基于MVC设计模式实现前后端交互。它将应用分为Model(业务逻辑)、View(数据展示)和Controller(请求调度)。Spring Boot作为开发脚手架,通过集成Spring MVC(spring-web依赖)提供Web能力。核心流程包括:1) 建立连接:使用@RequestMapping绑定URL与方法;2) 获取参数:支持普通参数、对象、数组、集合及@RequestParam重命名;3) 返回响应。适用于前后端分离场景,后端主要

记录了从0学习Java技术栈的日常 806

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Playwright CLI完整指南:让浏览器自动化变得简单高效的终极工具

Playwright CLI是一款专为现代开发者和AI助手设计的浏览器自动化命令行工具,它通过简洁的命令行接口让浏览器交互和测试变得前所未有的简单。无论你是想要快速进行网页测试、自动化表单填写,还是需要与AI助手配合完成复杂的浏览器操作,Playwright CLI都能提供高效且token友好的解决方案。 ## 为什么选择Playwright CLI而非传统方案? ### 传统浏览器自动化的痛

gitblog_01023的博客 704

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++实现电商系统:从Socket通信到MySQL事务的实战指南

在软件工程领域,构建高并发、高可用的在线服务系统是核心挑战之一,其关键在于对底层网络通信、数据持久化与并发控制的深刻理解。网络编程中,I/O多路复用(如epoll)是解决C10K问题的核心技术,它通过事件驱动模型高效管理海量连接。数据持久化则依赖于数据库事务与锁机制来保证ACID特性,避免数据不一致。这些技术的价值在于为电商、社交、游戏等需要处理大量实时交互的场景提供了稳定基础。本文聚焦于一个使用C++从零实现的在线购物商城系统,通过自定义二进制协议解决TCP粘包问题,并利用MySQL连接池与事务处理确保下

weixin_33744854的博客 378

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 完整电商项目--(二)用户注册(2):用户注册业务流程
下一篇: 完整电商项目--(三)验证码操作(1):图像验证码
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值