第六章:nodejs koa2 mysql redis 全栈开发--cookie,session,redis的简单运用

koa2文档:https://koa.bootcss.com/#introduction

一、koa2 使用传递简单参数的 cookies  模块

ctx.cookies.get(name, [options])

通过 options 获取 cookie name:

  • signed 所请求的cookie应该被签名

koa 使用 cookies 模块,其中只需传递参数。

ctx.cookies.set(name, value, [options])

通过 options 设置 cookie name 的 value :

  • maxAge 一个数字表示从 Date.now() 得到的毫秒数
  • signed cookie 签名值
  • expires cookie 过期的 Date
  • path cookie 路径, 默认是'/'
  • domain cookie 域名
  • secure 安全 cookie
  • httpOnly 服务器可访问 cookie, 默认是 true
  • overwrite 一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。

二、koa2 使用session 模块

1、安装  koa-generic-session 模块

npm install koa-generic-session --save-dev

2、在app.js文件中引入

const session = require('koa-generic-session')

3、在app.js文件中写入session的配置(在路由之前)

// session 配置
app.keys = ['WJiol#23123_']
app.use(session({
    // 配置 cookie
    cookie: {
        path: '/',
        httpOnly: true,
        maxAge: 24 * 60 * 60 * 1000
    }
}))

4、在router/users.js 文件中加入一个sesstion测试接口,我们来测试跑一下

// session 测试
router.get('/session-test', async function (ctx, next) {
    const session = ctx.session
    if (session.viewNum == null) {
        session.viewNum = 0
    }
    session.viewNum++
    ctx.body = {
        viewNum: session.viewNum
    }
})

我在两个不同的浏览器跑:

由于在不用的浏览器中跑,session会认为是两个不同的用户,所以返回的sesstion也不同,很明显,我们的sesstion已经测试成功了!

三、koa2 使用redis

我们来安装一下redis的基本依赖

npm install koa-redis redis --save-dev

修改一下之前的app.js导入和sesstion配置

// S session && redis
const session = require('koa-generic-session')
const redisStore = require('koa-redis')
const { REDIS_CONF } = require('./conf/db')
// E session && redis



// session && redis 配置
app.keys = ['WJiol#23123_']
app.use(session({
    // 配置 cookie
    cookie: {
        path: '/',
        httpOnly: true,
        maxAge: 24 * 60 * 60 * 1000
    },
    // 配置 redis
    store: redisStore({
        // all: '127.0.0.1:6379'   // 写死本地的 redis
        all: `${REDIS_CONF.host}:${REDIS_CONF.port}`
    })
}))

修改一下之前的配置文件conf/db.js

const env = process.env.NODE_ENV  // 环境参数
// 配置
let MYSQL_CONF
let REDIS_CONF

// TOKEN配置
let AUTHORIZATION = {
    jwtSecret: 'jwtSecret', // token秘钥
    tokenExpiresTime: 60 * 60 // token过期时间
}

if (env === 'dev') {
    // mysql
    MYSQL_CONF = {
        host: 'localhost',
        user: 'root',
        password: '123456',
        port: '3306',
        database: 'myblog'
    }
    // redis
    REDIS_CONF = {
        port: 6379,
        host: '127.0.0.1'
    }
}

if (env === 'production') {
    // mysql
    MYSQL_CONF = {
        host: 'localhost',
        user: 'root',
        password: '123456',
        port: '3306',
        database: 'myblog'
    }
    // redis
    REDIS_CONF = {
        port: 6379,
        host: '127.0.0.1'
    }
}

module.exports = {
    MYSQL_CONF,
    REDIS_CONF,
    AUTHORIZATION
}

再来执行一下 支持的测试sesstion接口:

成功,明显看到上面的 viewNum:2(成功的把之前存在sesstion的值存储到redis中)

 

结语:这章简单的介绍了一下koa2在node中操作cookie,sesstion,redis的简单运用和如何配置,希望各位在自己的项目中,什么是用sesstion,什么时候用redis,然后做最优选择~~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值