gpt4 book ai didi

next.js - 我怎样才能在下一个 js 12 中间件中获得下一个身份验证 session

转载 作者:行者123 更新时间:2023-12-05 01:56:18 27 4
gpt4 key购买 nike

我正在试验新的 nextjs 功能,但在 pages/_middleware.ts 中使用 next-auth 时这似乎不起作用

import { getSession } from 'next-auth/client';
import type { NextFetchEvent, NextRequest } from 'next/server'
import {NextResponse} from 'next/server'
async function middleware(req: NextRequest, ev: NextFetchEvent) {
let session = await getSession({ req });

return new Response('Auth required', {
status: 401,
headers: {
'WWW-Authenticate': 'Basic realm="Secure Area"',
},
})
}
export {middleware}

这适用于 api 路由,但“req”对象是 NextApiRequest,与此处不同。那么我如何才能在中间件中获取用户对象,以便进行角色/身份验证检查。

最佳答案

对我有用的是使用辅助函数 getToken() 并从将随请求一起发送的 token 中解密 session 信息,即 req 参数

这是我的 _middleware.ts 的示例

export async function middleware(
req: NextApiRequest,
ev: NextFetchEvent
) {
const token = await getToken({
req,
secret: process.env.SECRET,
});
console.log("from middleware ", token);
return NextResponse.next();
}

注意 process.env.SECRET 指的是您在 [...nextauth].ts 配置中为 jwt 使用的 secret /p>

关于next.js - 我怎样才能在下一个 js 12 中间件中获得下一个身份验证 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69895214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com