zoukankan      html  css  js  c++  java
  • Koa Session 的使用

    一、Session 简单介绍

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

    二、Session 的工作流程

    session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 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 (default is koa:sess)
        maxAge: 86400000, // cookie 的过期时间 maxAge in ms (default is 1 days)
        overwrite: true, //是否可以 overwrite (默认 default true)
        httpOnly: true, //cookie 是否只有服务器端可以访问 httpOnly or not (default true)
        signed: true, //签名默认 true
        rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
        renew: false, //(boolean) renew session when session is nearly expired,
    };
    app.use(session(CONFIG, app));

    4.使用

    设置值 ctx.session.username = "张三"; 
    获取值 ctx.session.username

    Cookie Session 区别

    1cookie 数据存放在客户的浏览器上,session 数据放在服务器上。

    2cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗 考虑到安全应当使用 session

    3session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用 COOKIE

    4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 cookie


    demo

    /*
    1.npm install koa-session  --save
    2、const session = require('koa-session');
    3、
     app.keys = ['some secret hurr'];
     const CONFIG = {
     key: 'koa:sess',
    maxAge: 86400000,
        overwrite: true,
        httpOnly: true,
        signed: true,
        rolling: false,
        renew: false,
    };
    
    app.use(session(CONFIG, app));
    
    
    设置 session
    ctx.session.username = "张三"
    
    获取 session
     ctx.session.username
    * */
    var Koa=require('koa'),
        router = require('koa-router')(),
        render = require('koa-art-template'),
        path=require('path'),
        session = require('koa-session');
    var app=new Koa();
    
    //配置 koa-art-template模板引擎
    render(app, {
        root: path.join(__dirname, 'views'),   // 视图的位置
        extname: '.html',  // 后缀名
        debug: process.env.NODE_ENV !== 'production'  //是否开启调试模式
    });
    //配置session的中间件
    app.keys = ['some secret hurr'];   /*cookie的签名*/
    const CONFIG = {
        key: 'koa:sess', /** 默认 */
        maxAge: 10000,  /*  cookie的过期时间        【需要修改】  */
        overwrite: true, /** (boolean) can overwrite or not (default true)    没有效果,默认 */
        httpOnly: true, /**  true表示只有服务器端可以获取cookie */
        signed: true, /** 默认 签名 */
        rolling: true, /** 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false) 【需要修改】 */
        renew: false, /** (boolean) renew session when session is nearly expired      【需要修改】*/
    };
    app.use(session(CONFIG, app));
    router.get('/',async (ctx)=>{
    
        //获取session
        console.log(ctx.session.userinfo);
        await ctx.render('index',{
            list:{
                name:'张三'
            }
        });
    })
    router.get('/news',async (ctx)=>{
        //获取session
        console.log(ctx.session.userinfo);
        ctx.body="登录成功";
    })
    router.get('/login',async (ctx)=>{
        //设置session
        ctx.session.userinfo='张三';
        ctx.body="登录成功";
    })
    app.use(router.routes());   /*启动路由*/
    app.use(router.allowedMethods());
    app.listen(3000);

     

  • 相关阅读:
    粒子系统(二):绘制精美几何图案
    图像识别:微信跳一跳机器人
    粒子系统(一):从零开始画一颗树
    Unity3D对弈游戏:狼吃羊游戏
    编程模拟自然(九):元胞自动机
    自动绘图AI:程序如何画出动漫美少女
    UWP简单示例(三):快速开发2D游戏引擎
    jsoup开发网页客户端3
    Android 自定义Dialog类,并在Activity中实现按钮监听。
    Jsoup开发网站客户端第二篇,图片轮播,ScrollView兼容ListView
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511689.html
Copyright © 2011-2022 走看看