– onerror:支持自定义错误句柄,如果koa-bodyparser抛出一个错误,您可以自定义响应如下:
app.use(bodyparser({
onerror: function (err, ctx) {
ctx.throw('body parse error', 422);
}
})); – disableBodyParser:可以通过设置ctx动态禁用body解析器。disableBodyParser = true。
app.use(async (ctx, next) => {
if (ctx.path === '/disable') ctx.disableBodyParser = true;
await next();
});
app.use(bodyparser());
koa-logger
请求响应监听日志
下载
npm i koa-logger 使用
~~// 引入日志中间件
const logger = require('koa-logger'); // 注册日志中间件
app.use(logger()); ~~
koa-session
用于Koa的简单会话中间件。默认为基于cookie的会话,并支持外部存储。
session
我们知道,http协议是无状态的,当用户进行登录后,并不会保存账户密码,如果我们需要维持用户的登录状态,就需要使用一些方法。目前主流的用户认证方法有基于token和基于session两种方式。
基于token的认证可以使用koa-jwt中间件,基于session的认证则使用标题的koa-session。
下载
npm i koa-session使用
app.js 入口文件中注册session
const CONFIG = {
key: 'koa:sess', /** (string) cookie key (default is koa:sess) */
/** (number || 'session') maxAge in ms (default is 1 days) */
// 状态保存最大时间,默认为一天
maxAge: 86400000,
autoCommit: true, /** (boolean) 自动保存头部 (default true) */
overwrite: true, /** (boolean) 能否覆盖 (default true) */
httpOnly: true, /** (boolean) httpOnly or not (default true) */
signed: true, /** (boolean) signed or not (default true) */
/** (boolean) 强制在每个响应上设置会话标识符cookie。过期将重置为原始maxAge,重新设置过期倒计时。 (default is false) */
rolling: false,
/** (boolean) 当会话快过期时续订会话,这样我们可以始终保持用户登录。(default is false)*/
renew: false,
}; // 如果你所有都为默认配置,则不需要传递配置参数,app.use(session(app))即可
app.use(session(sessionConfig, app));
session的使用
注册后可以通过上下文ctx找到session属性,下面代码将用户信息存入session属性中,并创建key和value
user.js
// 用户登录









