KoaJS Sessions

  • 定义和使用

    HTTP 是无状态的,因此为了将请求与任何其他请求相关联,您需要一种在 HTTP 请求之间存储用户数据的方法。Cookies 和 URL 参数都是在客户端和服务器之间传输数据的合适方法。
    但是,它们在客户端都是可读的。会话正好解决了这个问题。您为客户机分配一个 ID,它将使用该 ID 发出所有进一步的请求。与客户机关联的信息存储在与此 ID 链接的服务器上。
    我们需要 koa-session,因此使用-
    $ npm install --save koa-session
    
  • 示例

    我们将安装 koa-session 中间件。在本例中,我们将使用 RAM 存储会话。不要在生产环境中使用此功能。session 中间件处理所有事情,即创建session、设置session cookie和在上下文对象中创建 session 对象。
    每当我们再次从同一个客户机发出请求时,我们都会将它们的 session 信息存储在一起(假设服务器没有重新启动)。我们可以向这个 session 对象添加更多属性。
    在下面的示例中,我们将为客户机创建一个视图计数器。
    var session = require('koa-session');
    var koa = require('koa');
    var app = new koa();
    
    app.keys = ['Shh, its a secret!'];
    app.use(session(app));  // 包括会话中间件
    
    app.use(function *(){
        var n = this.session.views || 0;
        this.session.views = ++n;
        
        if(n === 1)
            this.body = 'Welcome here for the first time!';
        else
            this.body = "You've visited this page " + n + " times!";
    })
    
    app.listen(3001);
    
    上面的代码所做的是,当用户访问站点时,它为用户创建一个新会话并分配一个 cookie。下次用户访问时,将检查 cookie 并相应地更新 page.views session 变量。
    现在,如果你运行应用程序并转到 localhost:3001,您将得到以下响应。
    session
    如果重新访问页面,页面计数器将增加。在本例中,页面被刷新了12次。
    session