-
安装:
npm install cookie-parse
-
导入:
const cookieParser = require('cookie-parser');
-
设置中间件
app.use(cookieParser());
-
设置
cookie
app.get('/', function(req, res, next) { // 基础设置cookie,有效期为一个会话,浏览器关闭即失效 res.cookie('isLogin',false) res.send('respond with a resource'); });
-
获取
cookie
app.get('/admin',(req,res,next)=>{ console.log(req.cookies) // {isLogin: false} })
-
设置
cookie
的有效期app.get('/',(req,res,next)=>{ // 设置cookie在30s后失效 res.cookie('isLogin',true,{maxAge:30000}) })
cookie
的设置参数说明参数 解释 domain
域名 expires
过期时间,在设置的时间点后该cookie会失效,如: expires=Wednesday,09-Nov-99 23:00:00 GMT
maxAge
最大失效时间(ms),多少毫秒后失效 secure
当值为 true
时,cookie
在http
中是无效的,在https
中才有效path
表示在那个路由下可以访问到 cookie
httpOnly
是微软对 cookie
做的扩展,如果在cookie
中设置了httpOnly
属性,则通过程序(JavaScript
脚本、applet
等)将无法读取到cookie
信息,放在XSS
的攻击产生signed
表示 cookie
是否加密,true
时加密cookie
,需要用req.signedCookie
获得,被篡改的加密cookie
会被服务器拒绝,并且cookie
值会重置为他的原始值 -
加密cookie和解密cookie
// 加密 app.get('/', function(req, res, next) { res.cookie('isLogin',true,{signed:true}) });
// 解密 app.get('/admin',(req,res,next)=>{ console.log(req.signedCookies) // [Object: null prototype] { isLogin: 'true' } })
-
cookie
加密和解密原理// 导入node自带的加密模块 let cryto=require('crypto') // 定义加密cookie后存储对象 let secretCookie={} // 创建加密函数 function setSecretCookie(str){ // 使用的加密算法 let sf=cryto.createHash('md5') // 对字符串str进行加密 sf.update(str) // 加密后的二进制数据以字符串的形式返回 return sf.digest('hex') } // 定义加密函数 function getSecretCookie(str){ return secretCookie[str] } // 加密cookie app.get('/', function(req, res, next) { res.cookie('islogin',setSecretCookie("true")) // 加密后的数据作为键,加密前的数据作为值存入secretCookie对象 secretCookie[setSecretCookie("true")]='true' res.send('登录成功111'); }); // 解密cookie app.get('/admin',function(req,res,next){ let str=req.cookies.islogin res.send(getSecretCookie(str)) })
Express学习笔记(六)—— cookie
最新推荐文章于 2021-09-25 19:11:58 发布