后端——缓存Cookie、缓存Session、cookies和Session的区别:

目录

一、缓存Cookie

二、缓存Session

三、cookies和Session的区别:


一、缓存Cookie

通过 ctx.cookies可以在 Controller 中便捷、安全的设置和读取 Cookie

classCookieControllerextendsController {
async add() {
    const ctx = this.ctx;
    let count = ctx.cookies.get('count');   //核心代码==> 存
    count = count ? Number(count) : 0;
    ctx.cookies.set('count', ++count);
    ctx.body = count;
  }
​
async remove() {
    const ctx = this.ctx;
    const count = ctx.cookies.set('count', null);     //核心代码==> 取
    ctx.status = 204;
  }
}

需要注意的是,cookie默认不支持中文,可以尝试转码,如encodeURI('中文egg'),然后再转回来decodeURI(ctx.cookies.get('username')) 清除cookie把值设置为null即可。

在设置cookie时有个对象类型的可选参数,可以对cookie进行相关设置:
maxAge:设置cookie的有效期,单位毫秒,默认浏览器关闭消失;
httpOnly:设置cookie是否允许js访问,默认true,不允许;
overwrite:如果设置为true,相同的键值对会被覆盖,否则发送两个;
signed:如果为true表示对cookie进行签名,不是加密,只是防止被篡改,注意在获取的时候也要提供该设置进行匹配;
encrypt:是否加密,true加密后客户端看不到明文,只能在服务器端获取,注意在获取的时候也要提供该设置进行匹配;

eg:     this.ctx.cookies.set("email",ziduan.email,{maxAge:1000*60*60*24*365})

二、缓存Session

1.Session配置

// config/config.default.js文件
    config.session = {
    key: 'SSION',
    maxAge: 24 * 3600 * 1000, // 1 天
    httpOnly: true,
    encrypt: true,
};

2.设置Session

class SessionController extends Controller {
    async setuser() {
      this.ctx.session.userid = 12345;//设置缓存数据
      this.ctx.session.maxAge = ms('30d')//单独设置过期时间
    }
}
//如果要删除userid,可以直接将它赋值为 null
//设置 session 属性时不要以 _ 开头,不要是已存在的功能属性

3.获取Session 首先要知道后端的缓存与前端的缓存的区别(面试题)

class SessionController extends Controller {
    async getuser() {
     var userid=this.ctx.session.userid
      console.log(userid)//在所有接口中都能访问userid,除非没有设置过
    }
}

三、cookies和Session的区别:

cookies:把信息缓存到前端(客户端)==>不合理

Session:把信息存到后端

后端的cookies 和 session都是前端的cookies

后端的 session==>把要缓存的信息存到了后端

前端的cookies==>把要缓存的信息存到了前端

前端的session和Localstorage和后端没关系

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值