如何将参数从Nextjs 12中间件传递到路由处理程序



我正在使用新的稳定的nextjs 12中间件,并尝试将params从该中间件传递到路由处理程序。

我的用例:我正在使用带有json web令牌的中间件进行身份验证。例如,这个令牌包括公司id,我想将这个公司id传递给下面的路由处理程序来验证用户输入。

我的代码如下:

export async function middleware(req: NextRequest) {
if (request.nextUrl.pathname.startsWith("/user")) {
let {valid, token} = (await authVerify(
req.cookies.get("token")
))
if (valid) {
return NextResponse.next();
}
return NextResponse.json({ valid: false, message: "invalid token" });
}
}
export default async function getAllUserHandler(
req: NextApiRequest,
res: NextApiResponse
) 
const companyId = //req.company_id or something
return await userQuery(companyId);
}

我不确定它是否有效,但我会尝试一下。参见// Maybe this also works下方的行。

export async function middleware(req: NextRequest) {
if (request.nextUrl.pathname.startsWith("/user")) {
const { valid, token } = await authVerify(req.cookies.get("token"));
if (valid) {
const response = NextResponse.next();
// You can add cookies
response.cookies.set('vercel', 'fast', { path: '/test' });
// Maybe this also works
response.company_id = token.company_id;
return response;
}
return NextResponse.json({ valid: false, message: "invalid token" });
}
}
export default async function getAllUserHandler(
req: NextApiRequest,
res: NextApiResponse
) {
const companyId = req.company_id;
return await userQuery(companyId);
}

相关内容

  • 没有找到相关文章

最新更新