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

    一、 Session简单介绍

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

    二、 Session的工作流程

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

    三、 Egg.jssession的使用:

    egg.js session 基于 egg-session 内置了对 session 的操作

    设置:

    this.ctx.session.userinfo={ name:'张三',
    age:'20' }

    获取:

     var userinfo=this.ctx.session

    Session 的默认设置:

    exports.session = {
    key: 'EGG_SESS',
    maxAge: 24 * 3600 * 1000, // 1 day httpOnly: true,
    encrypt: true
    };

    四、 Sessionconfig.default.js中的配置

    config.session={ 
    key:'SESSION_ID',
     maxAge:864000,
    renew: true //延长会话有效期
    }

    五、 CookieSession区别

    1cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
    2cookie 相比 session 没有 session 安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE
    欺骗。
    3session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用 COOKIE
    4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 cookie


    demo :

    home.js控制器

    'use strict';
    
    const Controller = require('egg').Controller;
    
    class HomeController extends Controller {
      async index() {    
    
    
    
        //设置session
    
          this.ctx.session.username='张三';
        
    
    
          this.ctx.session.userinfo={
    
            name:'李四',
            age:20
          }
    
        //设置session的过期时间   修改session的默认参数  不建议用这样的方式
        
        // this.ctx.session.maxAge=5000; 
    
    
    
        
           await this.ctx.render('home');
      } 
    
      
    }
    
    module.exports = HomeController;

    new,js 控制器

    'use strict';
    
    const Controller = require('egg').Controller;
    
    class NewsController extends Controller {
      async index() {
    
    
      
        var username=this.ctx.session.username;
    
    
        var userinfo=this.ctx.session.userinfo;
    
        //设置session的过期时间   修改session的默认参数  不建议用这样的方式
        
        // this.ctx.session.maxAge=5000; 
    
    
        console.log(userinfo);
    
    
    
        await this.ctx.render('news',{
    
          username:username
        });
      }
    }
    
    module.exports = NewsController;

    config.default.js

    'use strict';
    
    module.exports = appInfo => {
      const config = exports = {};
    
    
    
     //配置session      session的配置和cookie基本是一样的,可以使用cookie里面的配置
      config.session={
          key:'SESSION_ID',   //设置session cookie里面的key
          maxAge:30*1000*60,
          httpOnly:true,     
          encrypt:true,
          renew:true   //renew等于true  那么每次刷新页面的时候 session都会被延期
      }
    
    
      // add your config here
      config.middleware = [];
    
    
     
    
      //配置模板引擎
      config.view = {
        mapping: {
          '.html': 'ejs',
        },
      };
      
    
      return config;
    };
  • 相关阅读:
    PHP下编码转换函数mb_convert_encoding与iconv的使用说明
    腾讯视频嵌入网页的方法 腾讯视频网页嵌入代码方法
    Agile工作方法
    居然有这种操作?各路公司面试题(作者:马克-to-win)
    IBM QMF下载
    AIX 常用命令 第一步(uname,lspv)
    TeraTerm下载
    TeraTerm设定(解决日文乱码问题)
    TeraTerm设定(窗体大小,字体字号)保存为默认值
    view class source code with JAD plugin in Eclipse
  • 原文地址:https://www.cnblogs.com/loaderman/p/11547809.html
Copyright © 2011-2022 走看看