简介
- session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而
session 保存在服务器上。
- 当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一
个类似于 key,value 的键值对, 然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再
访问时,携带 key(cookie),找到对应的 session(value)
目录结构
cookie
setcookie
//router.js
router.get('/setcookie', controller.cookie.setcookie);
router.get('/getcookie', controller.cookie.getcookie);
router.get('/clearcookie', controller.cookie.clearcookie);
//controller/cookie.js
'use strict';
const Controller = require('egg').Controller;
class CookieController extends Controller {
async setcookie() {
this.ctx.cookies.set("name", "张三",{
maxAge: 24 * 3600 * 1000,
httpOnly: true, // by default it's true
encrypt: true, // 加密,并且可以设置为中文
});
await this.ctx.render('setcookie')
}
async getcookie() {
let name = this.ctx.cookies.get("name",{
encrypt: true,
});
await this.ctx.render('getcookie', {
name
})
}
async clearcookie() {
// this.ctx.cookies.set("name", null);
this.ctx.cookies.set("name", {
maxAge: 0,
});
this.ctx.redirect("/")
}
}
module.exports = CookieController;
//getcookie.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div>
<%= name %>
</div>
</body>
</html>
session
//router.js
router.get('/setsession', controller.session.setsession);
router.get('/getsession', controller.session.getsession);
//congif/config.default.js
config.session = {
key:'SESSION_ID', //key名字
maxAge:1000*60*24,
httpOnly:true,
encrypt:true, //加密
renew:true //最大时间范围内,刷新,自动增加最大时间
}
//controller/session.js
'use strict';
const Controller = require('egg').Controller;
class SessionController extends Controller {
async setsession() {
this.ctx.session.userinfo = {
name: '张三',
age: '20'
}
await this.ctx.render('setsession')
}
async getsession(){
var userinfo=this.ctx.session.userinfo;
await this.ctx.render('getsession',{
userinfo
})
}
}
module.exports = SessionController;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。