Egg.js Cookie与Session详细解析
2023-10-14 09:22:07
Cookie和Session是两种常见的HTTP状态管理技术,在Egg.js中,可以使用app.cookie()方法来对Cookie进行增删改查,同时也可以通过app.config.cookie来配置Cookie的加密方式。
一、Cookie的增删改查和配置加密
- Cookie的简单了解
Cookie是一种存储在用户浏览器端的文本文件,它通常用于存储用户登录信息、购物车内容等数据。Cookie可以通过HTTP头中的Set-Cookie字段来设置,也可以通过JavaScript代码来设置。
- Cookie的增加操作
其实egg已经为我们准备好了操作Cookie的方法。直接使用就可以了。
/app/controller/cookie.js
module.exports = app => {
app.get('/cookie/add', async ctx => {
// 设置 cookie
ctx.cookies.set('name', 'egg');
// 重定向到主页
ctx.redirect('/');
});
};
- Cookie的删除操作
删除Cookie也很简单,只需要使用ctx.cookies.remove()方法即可。
/app/controller/cookie.js
module.exports = app => {
app.get('/cookie/remove', async ctx => {
// 删除 cookie
ctx.cookies.remove('name');
// 重定向到主页
ctx.redirect('/');
});
};
- Cookie的修改操作
修改Cookie也很简单,只需要使用ctx.cookies.set()方法重新设置Cookie即可。
/app/controller/cookie.js
module.exports = app => {
app.get('/cookie/modify', async ctx => {
// 修改 cookie
ctx.cookies.set('name', 'eggjs');
// 重定向到主页
ctx.redirect('/');
});
};
- Cookie的查询操作
查询Cookie也很简单,只需要使用ctx.cookies.get()方法即可。
/app/controller/cookie.js
module.exports = app => {
app.get('/cookie/query', async ctx => {
// 获取 cookie
const name = ctx.cookies.get('name');
// 重定向到主页
ctx.redirect('/');
});
};
- Cookie的配置加密
Egg.js默认情况下并没有对Cookie进行加密,如果需要对Cookie进行加密,则需要在config.js中配置cookie.encrypt的值为true。
/config/config.default.js
module.exports = {
// cookie 加密
cookie: {
encrypt: true,
},
};
二、Session的使用
Session是一种存储在服务器端的文本文件,它通常用于存储用户登录信息、购物车内容等数据。Session可以通过中间件来使用,也可以通过API来使用。
- Session中间件的使用
Session中间件的使用非常简单,只需要在app.js文件中添加以下代码即可。
// app/app.js
module.exports = app => {
app.use(app.middleware.session());
};
- Session API的使用
Session API的使用也非常简单,只需要使用app.session.get()方法和app.session.set()方法即可。
/app/controller/session.js
module.exports = app => {
app.get('/session/get', async ctx => {
// 获取 session
const name = ctx.session.get('name');
// 重定向到主页
ctx.redirect('/');
});
app.get('/session/set', async ctx => {
// 设置 session
ctx.session.set('name', 'egg');
// 重定向到主页
ctx.redirect('/');
});
};
三、Cookie和Session的比较
Cookie和Session都是HTTP状态管理技术,但它们之间也存在着一些差异。
特性 | Cookie | Session |
---|---|---|
存储位置 | 浏览器端 | 服务器端 |
大小限制 | 4KB | 无限制 |
安全性 | 相对不安全 | 相对安全 |
使用场景 | 用户登录信息、购物车内容等数据 | 用户登录信息、购物车内容等数据 |
四、总结
Cookie和Session都是非常重要的HTTP状态管理技术,在Egg.js中,可以使用app.cookie()方法来对Cookie进行增删改查,同时也可以通过app.config.cookie来配置Cookie的加密方式。此外,还可以使用Session中间件和Session API来管理Session数据。