我正在尝试新的 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}
Run Code Online (Sandbox Code Playgroud)
这适用于 api 路由,但“req”对象是 NextApiRequest ,与这里不同。那么我如何获取中间件内的用户对象,以便我可以进行角色/身份验证检查。
对我有用的是使用辅助函数getToken()并从令牌中解密会话信息,该令牌将与请求一起发送,即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();
}
Run Code Online (Sandbox Code Playgroud)
注意process.env.SECRET指的是您在jwt[...nextauth].ts配置中使用的秘密
| 归档时间: |
|
| 查看次数: |
3453 次 |
| 最近记录: |