You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Next.js中间件调用Auth0 getSession()或其他方式获取用户信息?

报错根因

@auth0/nextjs-auth0 默认导出的getSession方法仅适配传统Node.js运行时,仅能在Node.js环境的API路由、getServerSideProps等场景下调用。Next.js中间件运行在Edge Runtime,导入时默认加载了客户端侧的getSession实现,因此抛出「该方法仅能在服务端使用」的错误。

解决方法

方案1:使用Edge适配版本的接口

1.7.0及以上版本的@auth0/nextjs-auth0提供了Edge Runtime兼容的专属导出路径,直接替换导入语句即可正常使用:

import { getSession } from '@auth0/nextjs-auth0/edge'
import { NextResponse } from 'next/server'

export default async function middleware(req, ev) {
    const session = await getSession(req)
    console.log(session)
    return NextResponse.next()
}

方案2:手动解析会话Cookie

如果无法升级SDK版本,可以手动解析Auth0的会话Cookie获取用户信息:

  • Auth0默认将加密后的会话数据存储在appSession前缀的Cookie中
  • 在中间件内从请求头的Cookie字段取出对应值,完成签名验证后解码即可得到完整用户信息
注意事项
  • Edge Runtime不支持全部Node.js原生API,不要在中间件内调用仅Node.js环境支持的SDK方法
  • 手动解析Cookie时必须验证签名,避免伪造的会话数据被识别为合法身份

内容的提问来源于stack exchange,提问作者Terry O'Neill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:06:04