第9章 Cookie与会话

Cookie与会话
HTTP是无状态协议。用cookie和会话,在HTTP上建立状态。
cookie: 服务器发送一点消息,浏览器在一段可配置的时期内保存它。发送哪些消息确实是由服务器来决定:通常只是一个唯一ID号,标识特定浏览器,从而维持一个有状态的假象。
*cookie对用户来说不是加密的
可以加密cookie、或使用签名cookie
*用户可以删除或禁用cookie
*一般的cookie可以被篡改
确保cookie不被篡改,请使用签名cookie
*cookie可以用于攻击
跨站脚本攻击(XSS)
*如果你滥用cookie,用户会注意到
*如果可以选择,会话要优于cookie

cookiet实现:
当服务器希望客户端保存一个cookie时,它会发送一个响应头Set-Cookie,其中包含名称/值对。
当客户端向服务器发送含有cookie的请求时,它会发送多个请求头Cookie,其中包含这些cookie的值。

9.1 凭证的外化
外化第三方凭证是一种常见的做法,易于维护,还可以让你的版本控制系统忽略这些凭证文件。

9.2 Express中的Cookie
引入中间件cookie-parser
然后:

app.use(require('cookie-parser')(credentials.cookieSecret));

设置cookie或签名cookie

res.cookie('monster','nom nom');
res.cookie('signed_monster','nom nom',{signed:true});

获取客户端发送过来的cookie:

var monster = req.cookies.monster;
var signedMonster = req.signedCookies.monster;

删除cookie

res.clearCookie('monster');

9.3 检查Cookie

9.4 会话
要实现会话,必须在客户端存些东西,否则服务器无法从一个请求到下一个请求中识别客户端。通常的做法是用一个包含唯一标识的cookie,然后服务器用这个标识获取相应的会话信息。
广义上实现会话的方法:
1、把所有东西都存在于cookie里,称为“基于cookie的会话”
2、只在cookie里存一个唯一标识,其他东西都存在服务器上。

9.4.1 内存存储
安装express-session,
引入:

app.use(require('cookie-parser')(credentials.cookieSecret));
app.use(require('express-session')());

9.4.2 使用会话

req.session.userName = 'Anonymous';
var colorScheme = req.session.colorScheme || 'dark';
req.session.userName = null; //这会将“userName”设为null,但不会移除它。
delete req.session.colorScheme; //这会移除‘colorScheme’

9.5 用会话实现即显消息

9.6 会话的用途
会话最常见的用法是提供用户验证信息,你登录后就会创建一个会话,之后就不用再每次重新加载页面时再登录一次。
因为有cookie才能用会话。

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值