状态保持全景笔记之session (概念 → 流程 → 代码 → 有效期 → 删除,一条龙)

状态保持全景笔记之session (概念 → 流程 → 代码 → 有效期 → 删除,一条龙)

状态保持全景笔记之session (概念 → 流程 → 代码 → 有效期 → 删除,一条龙)

举报

周杰伦本人

发表于 2025/08/31 20:40:31

2025/08/31

【摘要】 状态保持全景笔记之session (概念 → 流程 → 代码 → 有效期 → 删除,一条龙) 一、两个必须记住的点Session 数据保存在服务器(内存 / Redis / 数据库)。Session 必须依赖 Cookie——浏览器端只存一把“钥匙”(SessionID)。 二、为什么离不开 Cookie把敏感信息直接放浏览器(Cookie)不安全;把信息锁在服务器后,需要给浏览器一把“钥...

状态保持全景笔记之session

(概念 → 流程 → 代码 → 有效期 → 删除,一条龙)

一、两个必须记住的点

Session 数据保存在服务器(内存 / Redis / 数据库)。

Session 必须依赖 Cookie——浏览器端只存一把“钥匙”(SessionID)。

二、为什么离不开 Cookie

把敏感信息直接放浏览器(Cookie)不安全;

把信息锁在服务器后,需要给浏览器一把“钥匙”才能取;

这把钥匙就是 SessionID,存于 Cookie,每次请求自动携带。

三、完整交互流程(第一次 → 第二次)

Session 简版流程

登录成功后,服务器生成一个 随机 SessionID(如 a1b2c3)。

把 a1b2c3 -> {"user_id":1001,"username":"alice"} 存 Redis。

把 sessionid=a1b2c3 写回浏览器 Cookie。

以后浏览器每次自动带 Cookie: sessionid=abc123,服务器查 Redis 即得完整用户信息,无需再存 Cookie 明文。

四、Django 代码 3 步完成

# 1. 设置 Session(登录成功)

def set_session(request):

request.session['uid'] = 1001

request.session['name'] = 'alice'

return HttpResponse('已登录')

# 2. 读取 Session(任意页面)

def get_session(request):

uid = request.session.get('uid', 0)

name = request.session.get('name', '游客')

return HttpResponse(f'欢迎 {name}')

# 3. 删除 Session(退出登录)

def del_session(request):

request.session.flush() # 清当前用户所有 Session

return HttpResponse('已退出')

五、有效期设置

方式

代码

说明

全局默认

settings.py SESSION_COOKIE_AGE = 3600

默认 30 分钟

手动延长

request.session.set_expiry(0)

浏览器关闭失效

手动延长

request.session.set_expiry(3600)

1 小时

六、调试 2 个命令

浏览器 → F12 → Application → Cookies → 查看 sessionid。

服务器 → python manage.py shell

from django.contrib.sessions.models import Session

Session.objects.all().count() # 当前活跃 Session 数量

七、一句话总结

“Session 把用户数据锁在服务器保险柜里,Cookie 只负责递钥匙;钥匙丢了(Cookie 被禁用),保险柜就打不开。”

推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:

cloudbbs@huaweicloud.com

Redis

点赞

收藏

关注作者

🎀 相关推荐

宰予昼寝原文、翻译及赏析、拼音版及朗读
🎯 棋牌365大厅

宰予昼寝原文、翻译及赏析、拼音版及朗读

📅 01-03 👀 5517
从零起步:UI设计还是编程,哪个更适合你的未来?
买车订车到提车要多久?
🎯 棋牌365大厅

买车订车到提车要多久?

📅 09-09 👀 8378