在Next.js App Router中如何通过@auth0/nextjs-auth0的handleAuth获取请求查询参数
在Next.js App Router中通过API查询参数动态传递login_hint到Auth0
核心实现思路
在App Router的Route Handler里,handleAuth允许你为login选项传入一个函数,该函数会接收当前的Request对象,你可以从中提取URL的查询参数,再动态生成login_hint参数。
具体代码示例
创建app/api/auth/[auth0]/route.ts文件,内容如下:
import { handleAuth, handleLogin } from '@auth0/nextjs-auth0'; export const GET = handleAuth({ login: async (req) => { // 解析请求URL并提取email查询参数 const url = new URL(req.url); const email = url.searchParams.get('email'); // 动态传入login_hint参数 return handleLogin(req, { authorizationParams: { ...(email && { login_hint: email }) // 仅当email存在时添加该参数 } }); } });
关键说明
- App Router的Route Handler中,
handleAuth的子方法(如login)会直接接收Request对象,这是和Pages Router的核心差异点。 - 用
new URL(req.url)解析请求地址,通过searchParams.get('email')获取查询参数里的邮箱值。 - 借助可选链和逻辑与操作,确保只有当
email参数存在时才传递login_hint,避免传入空值导致的异常。
调用示例
用户访问以下URL时,邮箱会自动填充到Auth0的登录提示中:
/api/auth/login?email=user@example.com
内容的提问来源于stack exchange,提问作者Gary Voss
相关产品推荐
相关产品推荐

