zoukankan      html  css  js  c++  java
  • Egg.js 中 Cookie 的使用

    1Cookie 简介

    HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。

    2Egg.js Cookie 的设置和获取

    Cookie 设置语法: ctx.cookies.set(key, value, options)

    如:

    this.ctx.cookies.set('name','zhangsan');

    Cookie 获取语法:ctx.cookies.get(key, options)

    如:

    his.ctx.cookies.get('name')

    清除cookie

    this.ctx.cookies.set('name',null);
    或者设置 maxAge 过期时间为 0

    3Egg.js Cookie 参数 options

    https://eggjs.org/en/core/cookie-and-session.html#container

    设置 cookie 建议的写法:

          this.ctx.cookies.set('key','value',{
              maxAge:1000*3600*24,  //cookie存储一天     设置过期时间后关闭浏览器重新打开cookie还存在
              httpOnly:true,
              signed:true,     //对cookie进行签名  防止用户修改cookie
              encrypt:true   //是否对cookie进行加密     如果cookie加密那么获取的时候要对cookie进行解密
    
          });
    ctx.cookies.get('key', { encrypt: true
    });

    4Egg.js 中设置中文 Cookie

          //如果cookie加密以后就可以设置中文cookie   (encrypt:true)
          this.ctx.cookies.set("userinfo",'张三',{
              maxAge:1000*3600*24,  //cookie存储一天     设置过期时间后关闭浏览器重新打开cookie还存在
              httpOnly:true,
              signed:true,     //对cookie进行签名  防止用户修改cookie
              encrypt:true   //是否对cookie进行加密     如果cookie加密那么获取的时候要对cookie进行解密
          })

    demo:

    home.js控制器

    'use strict';
    
    const Controller = require('egg').Controller;
    
    class HomeController extends Controller {
      async index() {    
    
          /*
          cookie:
    
            1.可以实现 同一个浏览器访问同一个域的时候 不同页面之间的数据共享
    
    
            2、实现数据的持久化  (关闭浏览器重新打开以后数据还存在)
    
    
          */
    
          /*
          
          第一个参数:cookies的名称
    
          第二个参数:cookies的值
    
          第三个参数:配置
    
          默认情况:cookies当浏览器关闭以后就销毁了
          */
    
          //  this.ctx.cookies.set('username','zhangsan');
     
          //注意:默认情况下面 egg.js里面的cookie没法设置中文    argument value is invalid (code: ERR_ASSERTION)
    
          // this.ctx.cookies.set('username','张三');
          this.ctx.cookies.set('key','value',{
              maxAge:1000*3600*24,  //cookie存储一天     设置过期时间后关闭浏览器重新打开cookie还存在
              httpOnly:true,
              signed:true,     //对cookie进行签名  防止用户修改cookie
              encrypt:true   //是否对cookie进行加密     如果cookie加密那么获取的时候要对cookie进行解密
    
          });
          // //如果cookie加密以后就可以设置中文cookie   (encrypt:true)
          // this.ctx.cookies.set("userinfo",'张三',{
          //     maxAge:1000*3600*24,  //cookie存储一天     设置过期时间后关闭浏览器重新打开cookie还存在
          //     httpOnly:true,
          //     signed:true,     //对cookie进行签名  防止用户修改cookie
          //     encrypt:true   //是否对cookie进行加密     如果cookie加密那么获取的时候要对cookie进行解密
          // })
    
         //cookies里面设置对象         JSON.stringify()          JSON.parse()
           await this.ctx.render('home');
      } 
    }
    
    module.exports = HomeController;
  • 相关阅读:
    XMPP框架 微信项目开发之XMPP配置——MySQL数据库、MySQLworkbench、Openfire服务器的安装与配置
    Mac Mysql 启动关闭和重启命令、重新设置root密码 、 卸载
    CocoaPods安装使用 关键点
    CocoaPods的介绍、安装、使用和原理
    iOS 组件化架构漫谈
    将自己库添加Cocoapods支持
    Appium移动端自动化测试-安卓真机+模拟器启动
    Java学习第二十五天
    Java学习第二十四天
    Java学习第二十三天
  • 原文地址:https://www.cnblogs.com/loaderman/p/11547659.html
Copyright © 2011-2022 走看看