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


    目录

    一、缓存Cookie

    二、缓存Session

    三、cookies和Session的区别:


    一、缓存Cookie

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

    1. classCookieControllerextendsController {
    2. async add() {
    3.    const ctx = this.ctx;
    4.    let count = ctx.cookies.get('count'); //核心代码==> 存
    5.    count = count ? Number(count) : 0;
    6.    ctx.cookies.set('count', ++count);
    7.    ctx.body = count;
    8. }
    9. async remove() {
    10.    const ctx = this.ctx;
    11.    const count = ctx.cookies.set('count', null); //核心代码==> 取
    12.    ctx.status = 204;
    13. }
    14. }

    需要注意的是,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配置

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

    2.设置Session

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

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

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

    三、cookies和Session的区别:

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

    Session:把信息存到后端

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

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

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

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

  • 相关阅读:
    Android设计模式-享元模式
    Raven2靶机渗透
    (四)RabbitMQ安装
    set_input_delay如何使用?
    iperf-2.0.9 在 Linux下的编译 与 海思平台的交叉编译
    15条重写烂代码的经验!
    【读书笔记】《自己动手写Java虚拟机》-方法调用
    云原生化有什么特点?
    Pycharm远程连接服务器来跑代码
    如何提高代码交付效率,完成代码交付应用自动化?
  • 原文地址:https://blog.csdn.net/qq_52301431/article/details/126170518