Node05 - cookie、session
1、cookie :在浏览器保存的 一些数据,每次请求都会带过来,*注意 空间非常小、安全性非常差、校验cookie是否被篡改过
(01)、cookie读取 =>
1、下载和引入 cookie-parser 、cookie-session
2、server.use(cookieParser(“秘钥”));
(02)、cookie发送 => res.cookie(名字,值{path: '/', 有效期,是否签名})
1、调用 => server.use(cookieParser());
2、发送cookie res.cookie('user', 'bule', {path:'/aaa’ (地址),maxAge:(过期时间),signed:签名})
3、req.secret:cookie 签名(防止篡改)
4、signedCookies:签过名的cookie、
(03)、删除cookie => res.clearCookie(名字);
const express = require('express'); const cookieParser = require('cookie-parser'); var server = express(); server.listen(8081); server.use(cookieParser()); server.use('/aaa/a.html', function(req, res){ req.secret='fasgasdasdafa'; //path设置需要和use的地址相同才可以。signed: 是否需要签名 res.cookie("name", "bule", {path: '/aaa', maxAge: 30*24*3600*1000, signed: true}); console.log(req.cookies);//未签名cookie console.log(req.signedCookies);//签名cookie res.send('ok'); });
2、session:保存数据,数据保存在服务端;*注意 安全 、无限、存在服务器、不能独立存在,基于cookie
(01)、session基于cookie实现的;
1 const express = require('express'); 2 const cookieParser = require('cookie-parser'); 3 const cookieSession = require('cookie-session'); 4 5 var server = express(); 6 server.listen(8082); 7 8 var arr=[];//session 秘钥,加强session破解难度 9 for (var i=0; i < 100000; i++){ 10 arr.push('src_'+Math.random()); 11 } 12 13 server.use(cookieParser()); //session需要依赖于cookie-parser,所以需要先引入cookie-parser 14 server.use(cookieSession({ 15 keys: arr, //session 秘钥,数量越多破解难度越大 16 maxAge: 2*3600*100 //session 过期时间 17 })); 18 server.use('/', function(req, res){ 19 //req.session[可以任意放置内容],例:查看登录次数 20 if (req.session['count'] == null){ 21 req.session['count'] = 1; 22 }else{ 23 req.session['count']++; 24 } 25 console.log(req.session['count']); 26 res.send('ok'); 27 });
(02)、session劫持
(03)、delete res.session 删除session