12.Egg.js教程-Cookie的配置和加密
上节学习了Egg.js对Cookie的增删改查操作,这节学习一下Cookie的一些配置选项,比如有效时间、服务端操作设置和中文编写加密这些操作。
Cookie时效设置
ctx.cookies.set()
方法是有三个参数的,第一个参数是key,第二个参数是value,第三个参数就可以进行配置。比如你需要配置Cookie的有效时间,可以使用maxAge
属性。(这个时间是毫秒。)
比如现在我们到/app/controller/mybj.js
文件里,修改add()
方法,把maxAge
设置为两秒,在添加Cookie两秒后,这个Cookie就会自己失效。
async add(){ const ctx = this.ctx; ctx.cookies.set('user', 'mybj123.com', { maxAge:1000*2, }); ctx.body = { status: 200, data: 'Cookie添加成功', }; }
打开浏览器,添加Cookie,等2秒钟之后再刷新页面,Cookie就自动消失了,也就是到达了最大有效时间。
HttpOnly的设置
伪造Cookie来绕过登录是黑客经常使用的一种手段,所以为了安全,Egg.js默认设置只允许服务端来操作Cookie。
比如现在你通过JS的方式document.cookie
获取Cookie是不能获取的(需要在浏览器的控制台输入获取)。当我们想通过客户端操作Cookie时,可以通过下面的代码进行设置。
async add(){ const ctx = this.ctx; ctx.cookies.set('user', 'mybj123.com', { maxAge:1000*60, httpOnly:false, }); ctx.body = { status: 200, data: 'Cookie添加成功', }; }
上面设置了httpOnly:false
,再次刷新页面,然后看浏览器控制台的HttpOnly
就变成false
属性了。
设置中文Cookie的方法
有时候开发需求我们在Cookie里设置中文,如果直接设置&添加,服务端会直接报错的。比如我们在add()
方法里设置中文,然后再操作就会报错500
。
ctx.cookies.set('user', '码云笔记')
点击按钮后,会直接报500
的错误。那下面就学习一下解决中文Cookie的方法。
设置中文Cookie的时候进行加密。
加密只要在第三个参数中,加入encrypt:true
,就可以加密成功。
ctx.cookies.set('user', '码云笔记', { encrypt: true, })
这时候到VSCode
的终端中就可以获取这个解密后的值了。
当然你也可以使用base64
对字符串进行加密解密。这个属于JavaScript的基础知识了,我这里就不做过多讲解了。
总结
本文主要讲了Egg.js中Cookie的有效期设置、服务端操作设置和中文Cookie的编写方法。
1. 本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
2. 如果内容损害你的权益请联系客服QQ:1642748312给予处理。
码云笔记 » 12.Egg.js教程-Cookie的配置和加密