栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

我对cookie-parser和session的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我对cookie-parser和session的理解

 1.cookie-parser 和express-session

cookie-parser 就是当客户端访问服务器的时候(服务运用了cookie),则服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来;以后客户端每次访问服务器,都会自动的携带着这份cookie。

而session也是cookie的一种,但是他们的执行机制并不怎么相同

express-session 是当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端,以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)

 2. express-session 和cookie-parser 的区别(重要)

session和cookie的作用有点相同,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器, 容易被窃取和修改,, 而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,会占用服务器的资源,增加服务器的负担。

3 .cookie-parser 和session都属于是第三软件,都是需要安装引用的

 3.1  cookie-parser :

npm i cookie-parser
//引用
let expressSession=require("express-session")

在cookie-parser 中设置cookie

//设置cookie
res.cookies('key','value',option);

 以下是在网上找的:

option 的具体配置如下,可供参考:
domain: 域名。设置子域名(二级域名)是否可以访问cookie。

name=value:键值对,可以设置要保存的 Key/Value,注意这里的 name 不能和其他属性项的名字一样

expires: 过期时间(秒),在设置的某个时间点后该 cookie 就会失效,如 expires=Wednesday,09-Nov-99 23:12:40 GMT

maxAge: 最大失效时间(毫秒),设置在多少后失效

secure: 当 secure 值为 true 时, cookie 在 HTTP 中是无效,在 HTTPS 中才有效

path: 表示 cookie 影响到的路由,如 path=/。如果路径不能匹配时,浏览器则不发送这个 cookie

signed: 表示是否签名(加密) cookie, 设为 true 会对这个 cookie 签名,这样就需要用res.signedcookies 访问它,前提需要设置上面中间件app.use传参 。未签名则用 res.cookies 访问。

4  express-session

npm i express-session
//引入第三方中间件
let favicon=require('serve-favicon');
//使用session中间件    
app.use(expressSession({
  resave:true,//每次是否都刷新存储器
  saveUninitialized:true, 
  secret:"xiaoxuesheng" //秘钥
}))

4.1   工作原理

1. 用户提交包含用户名和密码的表单,发送HTTP请求。
2. 服务器验证用户发来的用户名密码。
3. 如果正确则把当前用户名(通常是用户对象)存储到redis中,并生成它在redis中的ID。
    这个ID称为Session ID,通过Session ID可以从Redis中取出对应的用户对象, 敏感数据(比如authed=true)都存储在这个用户对象中。
4. 设置cookie为sessionId=xxxxxx|checksum并发送HTTP响应, 仍然为每一项cookie都设置签名。
5. 用户收到HTTP响应后,便看不到任何敏感数据了。在此后的请求中发送该cookie给服务器。
6. 服务器收到此后的HTTP请求后,发现cookie中有SessionID,进行放篡改验证。
7. 如果通过了验证,根据该ID从Redis中取出对应的用户对象, 查看该对象的状态并继续执行业务逻辑。

4.2 req.session - 访问会话

正确设置中间件后,可以通过属性来存储或访问Session数据,Session会被序列化为JSON存储。

req.sessionID - 已载入Session的ID

通过属性,可以获取已加载的Session的ID。在Session创建/载入后,该属必是个只读值。req.sessionID

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号