它的使用方法:
(1)安装
npm i cookie-parser
(2)引入
var cookieParser = require('cookie-parser');
app.use(cookieParser());//不加密
app.use(cookieParser(“签名”));//加密
(3) 生成
router.get('/code', function(req, res, next) {
//不加密
// res.cookie('xiaoming', '222');
// console.log(req.cookies);//取出不加密
//加密
res.cookie('xiaohong', '222', {
signed: true
});
console.log(req.signedcookies); //取出加密
res.send(11);
});
2.cookie的执行原理:当客户端访问服务器的时候(服务运用了cookie),则服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来;以后客户端每次访问服务器,都会自动的携带着这份cookie。
打个比方:就相当于你想办理一个地方的出入证明,第一次先得找服务人员办证。服务人员会给你一个证卡。你需要保存起来,以后你每次想进去那个地方的时候就需要携带这个证卡。
cookie虽然简单好用但是他存在风险性,他每次会把数据保存在客户端,,容易被篡改(删除、禁用),且保存的数据有限。
3.那么我们的 express-session此时就闪亮登场了,session是一种特殊的cookie。cookie是保存在客户端的,而session是保存在服务端。(1)安装
x npm i express-session
(2)引入
//引入session中间件
let expressSession=require("express-session")
//使用session中间件
app.use(expressSession({
resave:true,//每次是否都刷新存储器
saveUninitialized:true,
secret:"xiaoxuesheng" //秘钥
}))
(3) 生成
// express-session
//存数据
router.get('/sess', (req, res) => {
req.session.youname = 'xx';
res.send('ok')
});
//取数据
router.get('/sess1', (req, res) => {
console.log(req.session);
res.send('ko')
});
session的执行原理:当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。
session就比较有安全性了,他是把数据存储到服务端更加的安全,返回给客户端的是一个id,能有效的反之用户篡改数据。
4总结:.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。
.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个cookie,当这个Session结束时,其实就是意味着这个cookie就过期了
(1)cookie的特点:
-
保存到客户端,容易被篡改(删除、禁用)
-
保存的数据量有限的
-
简单易懂好用
(2)session的特点:
-
保存到服务端,能防止被篡改(删除、禁用)
-
能保存大量的数据
-
比较占内存
(2)cookie和session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
(3)cookie和session的共同点:cookie和session都是用来跟踪浏览器用户身份的会话方式
所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在cookie中



