美文网首页
koa 中 cookie 和 session 的使用

koa 中 cookie 和 session 的使用

作者: shadow123 | 来源:发表于2020-12-31 10:14 被阅读0次

    cookie

    cookie 是存储于访问者的计算机中的变量。可以让我们用同一浏览器访问同一域名的时候共享数据。

    ctx.cookie,set(name,value,[options])
    

    options 中的参数:

    • maxAge:一个数字表示从 Date.now()得到的毫秒数。
    • expires: cookie 过期的Date
    • path:cookie 路径,默认是 /
    • secure: 安全 cookie,默认 false,设置成true 表示只有 https 可以访问
    • httponly:是否只是服务器可以访问 cookie,默认是 true

    示例:

    ctx.cookie,set("userinfo","user",{
        maxAge:60*60*1000
    })
    

    koa 中cookie 不能直接使用中文,需要转换成 base64 字符

    let data = new Buffer("名字"),toString("base64")
    ctx.cookie,set("userinfo",data,{
        maxAge:60*60*1000
    })
    
    // 使用
    let cookieData = ctx.cookie.get("userinfo")
    new Buffer(cookieData,"base64").toString()
    

    session

    session 是另一种记录客户状态的机制,不同的是 cookie 保存在客户端浏览器中,而 session 保存在服务器上。

    session 的工作流程

    当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于 key,value的键值对,然后将 key(cookie) 返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)。客户的信息都保存在session 中。

    koa 中 使用 session

    1.安装 koa-session

    npm install koa-session --save 
    

    2.引入 koa-session

    const session = require('koa-session')
    

    3.设置中间件

    app.keys = ['some secret hurr'];
     
    const CONFIG = {
      key: 'koa.sess', // cookie key
      maxAge: 86400000,// cookie 的过期时间,默认1天
      autoCommit: true, // 自动提交headers,默认为true */
      overwrite: true, // 是否可以 overwrite,默认为true */
      httpOnly: true, // 是否只有服务器可以访问httpOnly,默认为true
      signed: true, // 签名默认为true
      rolling: false, // 在每个请求时强制设置cookie。到期重置cookie过期时间。默认为false 
      renew: false, // 当会话即将到期时更新会话,因此我们可以始终保持用户登录状态。默认为 false
      secure: true, // 安全 cookie
      sameSite: null, // cookie sameSite 选项,默认null
    };
     
    app.use(session(CONFIG, app));
    

    4.使用

    // 设置 session
    ctx.session.username = "user"
    
    // 获取 session
    ctx.session.username
    

    cookie 和 session 的区别

    1.cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
    2.cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。

    相关文章

      网友评论

          本文标题:koa 中 cookie 和 session 的使用

          本文链接:https://www.haomeiwen.com/subject/zejloktx.html