美文网首页KOA
9.2KOA Session

9.2KOA Session

作者: 帶頭二哥 | 来源:发表于2020-01-06 02:15 被阅读0次

    Session

    导言

    • koa2 原生功能只支持 Cookies,不支持 Session 功能。只能用第三方中间件实现。
    • session 选择方案
      • 如果session数据量很小,可以直接存在内存中
      • 如果session数据量很大,则需要存储介质存放session数据

    MySql数据库存储Session方案

    所需中间件

    • koa-session-minimal

    提供存储介质的读写接口

    • koa-mysql-session

    koa-session-minimal 中间件提供MySQL数据库的 session 数据读写操作

    项目实现

    安装
    • 安装 Mysql 数据库
    • 安装中间件
          npm install koa-session-minimal --save
          npm install koa-mysql-session  --save
      
    • 实战案例
          // 引入 koa 模块
          const Koa = require('koa')
          // 创建 koa 应用
          const app = new Koa()
          // session 中间件接口
          const session = require('koa-session-minimal')
      
          // session mysql 实现
          const MysqlSession = require('koa-mysql-session')
      
          // 配置存储session信息的mysql
              let store = new MysqlSession({
              user: 'root',
              password: '123456',
              database: 'koa',
              host: '127.0.0.1',
          })
      
          // 存放sessionId的cookie配置
          let cookie = {
              maxAge: '', // cookie有效时长
              expires: '',  // cookie失效时间
              path: '', // 写cookie所在的路径
              domain: '', // 写cookie所在的域名
              httpOnly: '', // 是否只用于http请求中获取
              overwrite: '',  // 是否允许重写
              secure: '',
              sameSite: '',
              signed: '',
          }
      
          // 使用session中间件
          app.use(session({
              key: 'SESSION_ID',
              store: store,
              cookie: cookie
          }))
      
          app.use( async ( ctx ) => {
      
              // 设置session
              if ( ctx.url === '/set' ) {
                  ctx.session = {
                      user_id: Math.random().toString(36).substr(2),
                      count: 0
                  }
                  ctx.body = ctx.session
              } else if ( ctx.url === '/get' ) {
                  // 读取session信息
                  ctx.session.count = ctx.session.count + 1
                  ctx.body = ctx.session
              } 
      
          })
          // 启动应用
          app.listen(3000)
      
      

    相关文章

      网友评论

        本文标题:9.2KOA Session

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