位置: 编程技术 - 正文

Nodejs 和Session 原理及实战技巧小结(nodejs和jsp)

编辑:rootadmin

推荐整理分享Nodejs 和Session 原理及实战技巧小结(nodejs和jsp),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs怎么和前端交互,nodejs和ssm,nodejs和ssm,nodejs怎么和前端交互,nodejs与javascript,nodejs与javascript,node session怎么用,nodejs session使用,内容如对您有帮助,希望把文章链接给更多的朋友!

一 Cookie

因为HTTP协议是没有状态的,但很多情况下是需要一些信息的,比如在用户登陆后、再次访问网站时,没法判断用户是否登陆过。于是就有了cookies,用于在浏览器端保存用户数据,它有如下特点

1 是在客户端浏览器端才有的

2 用于记录信息,大小最大为4K字节

3 如果使用了cookies,那么任何对该域名的访问都会带上cookies

目前新型网站更多的采用浏览器缓存,cookie会存在一些问题,比如你每次往服务器提交请求时,都会带上cookie,无论是你访问的是不是静态图片。

cookie例子:

二 Session

session类似服务器端的cookie,保存于服务器端,类似于服务器缓存。用户登陆了总需要验证吧,那么就在session中验证即可,session和cookie是一一对应关系。

session的创建顺序

生成全局唯一标识符(sessionid);

开辟数据存储空间。一般会在内存中创建相应的数据结构,但这种情况下,系统一旦掉电,所有的会话数据就会丢失,如果是电子商务网站,这种事故会造成严重的后果。不过也可以写到文件里甚至存储在数据库中,这样虽然会增加I/O开销,但session可以实现某种程度的持久化,而且更有利于session的共享;

将session的全局唯一标示符发送给客户端。

问题的关键就在服务端如何发送这个session的唯一标识上。联系到HTTP协议,数据无非可以放到请求行、头域或Body里,基于此,一般来说会有两种常用的方式:cookie和URL重写。

三 Set-Cookie

Cookie是如何被设置的呢?是被服务器返回的请求设置的。

服务器会返回一个set-cookie的消息,通知浏览器要设置cookie了,于是浏览器会根据set-cookie里的字段来设置信息了,比如上图的信息就会设置session=r@rdegges.com

四 实战

我们以client-session(express-session基本完全一样)为例,为项目配置session

1 安装模块

2 配置session

1)secret:一个随机字符串,因为客户端的数据都是不安全的,所以需要进行加密

Nodejs 和Session 原理及实战技巧小结(nodejs和jsp)

2) duration:session的过期时间,过期了就必须重新设置

3) activeDuration: 激活时间,比如设置为分钟,那么只要分钟内用户有服务器的交互,那么就会被重新激活。

五 在Session中保存用户信息

六 Session层中间件

我们当然不希望每个请求都加上这一段,所以我们使用express来做全局配置

如果用户逻辑在没有登陆时必须登陆,那我们可以继续加一个路由

七 安全性

1 我们可以在登出时重置session

还可以加一些安全性

httpOnly:用来保证cookie只能通过http访问,而不能用js来读取

secure:强制使用https

ephemeral:关闭浏览器时同时关闭cookie

八 总结

Cookie和session由于实现手段不同,因此也各有优缺点和各自的应用场景:

应用场景

Cookie的典型应用场景是Remember Me服务,即用户的账户信息通过cookie的形式保存在客户端,当用户再次请求匹配的URL的时候,账户信息会被传送到服务端,交由相应的程序完成自动登录等功能。当然也可以保存一些客户端信息,比如页面布局以及搜索历史等等。Session的典型应用场景是用户登录某网站之后,将其登录信息放入session,在以后的每次请求中查询相应的登录信息以确保该用户合法。当然还是有购物车等等经典场景;

安全性

cookie将信息保存在客户端,如果不进行加密的话,无疑会暴露一些隐私信息,安全性很差,一般情况下敏感信息是经过加密后存储在cookie中,但很容易就会被窃取。而session只会将信息存储在服务端,如果存储在文件或数据库中,也有被窃取的可能,只是可能性比cookie小了太多。

Session安全性方面比较突出的是存在会话劫持的问题,这是一种安全威胁,这在下文会进行更详细的说明。总体来讲,session的安全性要高于cookie;

性能

Cookie存储在客户端,消耗的是客户端的I/O和内存,而session存储在服务端,消耗的是服务端的资源。但是session对服务器造成的压力比较集中,而cookie很好地分散了资源消耗,就这点来说,cookie是要优于session的;

时效性

Cookie可以通过设置有效期使其较长时间内存在于客户端,而session一般只有比较短的有效期(用户主动销毁session或关闭浏览器后引发超时);

其他

Cookie的处理在开发中没有session方便。而且cookie在客户端是有数量和大小的限制的,而session的大小却只以硬件为限制,能存储的数据无疑大了太多。

继续补充下,关于如何做一个完整的登陆

1 用户端

一般来说应该使用https,而且密码绝不能在网络中明文传输,因此在往服务器传输时就应该先加密,常见的md5,但md5被破解,因此可以用SHA来加密 SHA(password)

2 服务端

服务端需要对密码再进行加密,因为所有客户端的东西都是不安全的,万一你的网络被监听了呢,因此会进行 SHA(username+SHA(password)+sault)的加密,这里的sault为随机数,防止被脱库了后被猜出密码,所以需要附加一个随机数,这个sault最好是存放到另外的数据库中,防止因为存到一个库中被脱库中猜出

总结

以上所述是小编给大家介绍的Nodejs 和Session 原理及实战技巧小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

NodeJS收发GET和POST请求的示例代码 本文介绍了NodeJS收发GET和POST请求的示例代码,分享给大家,也给自己留个笔记一express框架接收app.get('/',function(req,res){varurl=req.query.url;varname=req.query.name;c

用nodejs实现json和jsonp服务的方法 一、JSON和JSONPJSONP的全称是JSONwithPadding,由于同源策略的限制,XmlHttpRequest只允许请求当前源(协议,域名,端口)的资源。如果要进行跨域请求,我们

node跨域请求方法小结 本文介绍了node跨域请求,主要介绍了两种方法,一种是jsonp,另一种res.wirteHead,具体如下:第一种:jsonp参看用nodejs实现json和jsonp服务第二种:res.wirteHe

标签: nodejs和jsp

本文链接地址:https://www.jiuchutong.com/biancheng/380846.html 转载请保留说明!

上一篇:Node.js 使用命令行工具检查更新(node.js使用教程)

下一篇:NodeJS收发GET和POST请求的示例代码(nodejs接收form表单)

  • aisino金税盘怎么安装在电脑上
  • 冲回多计提费用
  • 印花税的缴纳方式有哪三种
  • 税务登记如何注销
  • 附加税的计算公式2023
  • 预缴增值税的账务
  • 什么是原始凭证?审核原始凭证主要审查哪些内容?
  • 已执行新金融准则利润表如何填列
  • 企业增资后需要交什么税
  • 月末一般无余额的有
  • 补缴以前年度附加税
  • 公司出售旧汽车要交什么税
  • 无形资产减值损失一经确认在以后期间不得转回
  • 收入总额的概念
  • 提供劳务企业所得税纳税义务发生时间
  • 房地产开发企业销售自行开发的房地产项目
  • 房地产企业在开盘前的销售费用是否可以在税前扣除
  • 私募基金超募如何购买
  • 建筑业出售废旧电脑取的收入如何申报
  • 应收账款收回时间怎么体现
  • 购买方退货的会计处理
  • 咨询服务企业发展瓶颈期
  • 合伙企业可以弥补以前年度亏损吗
  • 固定资产增值税可以一次性抵扣吗
  • 企业所得税前列支的费用
  • 个人如何缴纳公共维修基金
  • 事业单位需要写自传吗
  • 结转贸易方式
  • 接受实物投资的增值税会计核算方法
  • 个人所得税工资和实际工资对不上
  • 餐饮企业员工
  • 企业取得的不征税收入需要在几年内花出去
  • 安装属于劳务报酬吗
  • 企业所得税零申报资产总额怎么填
  • 民办非企业缴纳失业保险吗
  • 分期付款购买商品房后续没钱还怎么办
  • 现金清查制度的内容包括
  • 2021发票勾选认证
  • 新版Win10中,如何仅修改部分文本大小
  • 魁北克位置地图
  • 若依框架讲解
  • php教程100
  • 企业预付工程车租赁费
  • thinkphp5.1完全开发手册
  • thinkphp5上传图片
  • php制作微信小程序
  • 为什么税前利润加可抵扣暂时性差异
  • vue项目创建流程
  • 数据库管理系统能对数据库中的数据进行查询
  • opencv如何显示图片
  • gluster peer status
  • 预支工资的借条图片
  • 以前年度损益调整是什么意思
  • 不动产租赁专票对房产有无影响
  • vue整合electron
  • 一般纳税人超过多少要交税
  • 在校大学生可以考教师资格证吗
  • 金融企业有
  • 固定资产资本化后续支出
  • 新注册的公司在企查查上查不到
  • 银行退汇怎么做会计分录
  • 提供劳务结转的成本计入什么科目
  • 收到政府土地补偿款账务处理
  • 会计的主要目标是提供什么和什么
  • windows防病毒
  • Usrshuta.exe - Usrshuta是什么进程
  • linux ifconfig命令详解
  • macbook2020款改硬盘
  • CentOS 6.x 到 CentOS 7 的升级过程
  • windows10总是提醒更新
  • win10语音控制电脑
  • cocos2d怎么用
  • cocos2dx在暂停某些元素后导致crash问题
  • 猫的喵喵
  • jquery自定义的方法有哪些
  • 淘宝模拟生成器
  • Android多个surface
  • 国税和地税比例
  • 税收优惠政策有哪些企业
  • 支付宝交税查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设