Deno 中间件向请求添加负载

Deno middleware to add payload to request

我正在尝试使用 oak 在 Deno 中创建一个中间件,我想验证一个 jwt 令牌,然后如果一切正常,将有效负载添加到请求正文中。

找到此代码:

import { validateJwt } from "https://deno.land/x/djwt/validate.ts"
import { key } from "../utils/jwt.js";

export const validate = async ({request, cookies}, next) => {
    const token = await cookies.get("token");
    const result = await validateJwt(token, key, { isThrowing: false });
    if(result) {
        request.auth = true;
        request.username = result.payload.username;
    }
    await next();
}

但不再工作,并且无法找到有关如何向请求添加属性的任何信息。

我最后想实现的是访问controller内部的payload

提前致谢。任何指导将不胜感激

花了一段时间,但找到了如何做。要将变量从中间件传递到路由或另一个中间件,您不再使用 Request 而是使用上下文 State

app.use(async (ctx, next) => {
  // do whatever checks to determine the user ID
  ctx.state.userId = userId;
  await next();
  delete ctx.state.userId; // cleanup
});

app.use(async (ctx, next) => {
  // now the state.userId will be set for the rest of the middleware
  ctx.state.userId;
  await next();
});