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();
});
我正在尝试使用 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();
});