通过 options
获取 cookie name
:
signed
所请求的cookie应该被签名koa 使用 cookies 模块,其中只需传递参数。
通过 options
设置 cookie name
的 value
:
maxAge
一个数字表示从 Date.now() 得到的毫秒数signed
cookie 签名值expires
cookie 过期的 Date
path
cookie 路径, 默认是'/'
domain
cookie 域名secure
安全 cookiehttpOnly
服务器可访问 cookie, 默认是 trueoverwrite
一个布尔值,表示是否覆盖以前设置的同名的 cookie (默认是 false). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(不管路径或域)是否在设置此Cookie 时从 Set-Cookie 标头中过滤掉。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已经测试成功了!
我们来安装一下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,然后做最优选择~~~~