一、cookie
在koa2中的ctx对象直接提供了cookie的set和get方法
写入cookie:ctx.cookies.set(name, value, [options])
读取cookie:ctx.cookies.get(name, [options])
具体使用:
const Koa = require('koa');;
const Router = require('koa-router');
const Views = require('koa-views');
const BodyParser = require('koa-bodyparser');
const Static = require('koa-static');
//创建实例
const app = new Koa();
const router = new Router();
//配置静态资源中件间
app.use(Static(__dirname + "/static"));
//配置ejs模板中间件
app.use(Views('views', {
extension: 'ejs'
}));
//配置bodyparser中间件
app.use(BodyParser());
//路由
router.get('/index', async ctx => {
//保存cookie到浏览器客户端
//userinfo=admin
ctx.cookies.set('userinfo', 'admin', {
maxAge: 10 * 1000
});
await ctx.render('index', {userinfo:''});
});
router.get('/main',async ctx=>{
//获取cookie信息
let userinfo = ctx.cookies.get('userinfo');
console.log(userinfo);
ctx.body = userinfo;
})
app.use(router.routes(), router.allowedMethods());
app.listen(3000);
可以通过浏览器设置查看cookie是否保存在浏览器
![](https://img.haomeiwen.com/i20024382/6e243a7675d4de69.png)
同时还可以使用检查功能查看是否取到存储的cookie
![](https://img.haomeiwen.com/i20024382/93481116a6d76e98.jpg)
二、session
概念:session是服务端技术,不同的浏览器客户端访问服务端时,会在服务器创建一个其独享的session对象,session代表着服务端和客户端一次会话的过程,session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web之间跳转时,存储在session对象的变量将不会丢失。而是在整个会话过程中一直存在下去。当客户端关闭对话,或者sesion超时时会话结束。
-
安装:
npm i koa-session
-
引用:
const Session = require('koa-session');
使用:
配置session中间件:
//配置session的中间件
app.keys = ['secret-web-yuguo']; /**cookie的签名 默认*/
const CONFIG = {
key: 'koa:sess', /** 默认 */
maxAge: 10000, /** cookie的过期时间 */
overwrite: true, /** 默认 可以重写过期时间 */
httpOnly: true, /** true表示只有服务器端可以获取 cookie */
signed: true, /** 默认 签名 */
rolling: true, /** 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false) */
renew: false, /** 当用户进行浏览器操作时刷新 cookie 过期时间 */
};
app.use(Session(CONFIG, app));
保存信息到session:
router.get('/index' ,async ctx=>{
ctx.session.userinfo ='test'//保存信息到session,以key=value的方式
await ctx.render('index',{})
})
获取session:
router.get('/user' ,async ctx=>{
let userinfo =ctx.session.userinfo
console.log(userinfo)
//渲染到index.ejs页面
await ctx.render('index',{user:userinfo})
})
index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>主界面</div>
<div><%= user %></div>
</body>
</html>
![](https://img.haomeiwen.com/i20024382/c666a527b4d48326.png)
网友评论