美文网首页
Koa新手常用中间件

Koa新手常用中间件

作者: 中華小龍 | 来源:发表于2021-04-28 10:07 被阅读0次

    koa-body

    一个功能齐全的koa体解析器中间件。支持多部分、urlencoded和json请求主体。提供与Express的bodyParser-multer相同的功能。

    const koaBody = require('koa-body');
    app.use(koaBody({
        multipart: true,
        formidable: {
          uploadDir: path.join(__dirname, "/public/uploads"), //上传文件存放地址
          keepExtensions: true,
        },
      }));
    

    koa-parameter

    koa的参数验证中间件,由参数提供支持。

    const parameter = require('koa-parameter');
    parameter(app); 
    
    //Usage
    app.use(async function (ctx) {
      ctx.verifyParams({
        name: 'string',
        password: 'string'
      });
    });
    

    koa-static

    Koa静态文件服务中间件

    const koaStatic = require('koa-static');
    app.use(koaStatic(path.join(__dirname, "public")));
    // 注入public为静态资源库
    

    @koa/cors

    Koa跨域中间件

    const cors = require("@koa/cors");
    app.use(
      cors({
        origin: function (ctx) {
          //设置允许来自指定域名请求
          if (ctx.url === "/api") {
            return "*"; // 允许来自所有域名请求
          }
          return "http://localhost:8000"; //只允许http://localhost:8080这个域名的请求
        },
        maxAge: 5, //指定本次预检请求的有效期,单位为秒。
        credentials: true, //是否允许发送Cookie
        allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], //设置所允许的HTTP请求方法
        allowHeaders: ["Content-Type", "Authorization", "Accept"], //设置服务器支持的所有头信息字段
        exposeHeaders: ["WWW-Authenticate", "Server-Authorization"], //设置获取其他自定义字段
      })
    );
    
    

    jsonwebtoken && koa-jwt

    jwt.sign(负载内容, 加密Key值, [参数, 回调])

    var jwt = require('jsonwebtoken');
    var token = jwt.sign({ foo: 'bar' }, '加密Key值');
    // sign with RSA SHA256
    var privateKey = fs.readFileSync('private.key');
    var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'});
    

    options:

    • algorithm 加密模式,(默认: HS256)

    • expiresIn: 过期时间,以秒或描述时间跨度的字符串表示。例如:60、“2天”、“10小时”、“7天”。数值被解释为秒计数。如果使用字符串,请确保提供时间单位(天、小时等),否则默认使用毫秒单位 ("120"意味"120毫秒").

    • notBefore: 以秒或描述时间跨度的字符串表示。例如:60、“2天”、“10小时”、“7天”。数值被解释为秒计数。如果使用字符串,请确保提供时间单位(天、小时等),否则默认使用毫秒单位
      ("120"意味"120毫秒")。

    iat (issued at) 签发日期

    koa-jwt此模块允许您在Koa(node.js)应用程序中使用jsonweb令牌对HTTP请求进行身份验证。

    var jwt = require('koa-jwt');
    // 中间件启用验证并排除'/public'路径
    app.use(jwt({ secret: '加密Key值' }).unless({ path: [/^\/public/] }));
    
    // 无验证的中间件
    app.use(function(ctx, next){
      if (ctx.url.match(/^\/public/)) {
        ctx.body = 'unprotected\n';
      } else {
        return next();
      }
    });
    
    // 受验证的中间件
    app.use(function(ctx){
      if (ctx.url.match(/^\/api/)) {
        ctx.body = 'protected\n';
      }
    });
    

    相关文章

      网友评论

          本文标题:Koa新手常用中间件

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