拓扑森林
首页OPC课程政企培训专属智能体项目投融资行业资讯站内论坛关于我们
登录
跳到主内容
    论坛/求助问答

    Auth.js session 中 role 字段缺失

    阿杰·2025/04/29 21:57:37·0 浏览
    站内论坛
    教程论坛排行榜徽章
    阿杰
    阿杰楼主
    2025/04/29 21:57:37
    Auth.js 5 signIn redirect:false 返回 { error, ok, status, url }。判断成功:!result.error && result.ok。注意 result.url 可能含 ?error= 参数,用 redirectTo 显式指定避免误判。
    
    Prisma @@map 是表名映射(模型 → 数据库表名),字段 @map 是列名映射。混淆会导致查询的表/列名不匹配。规则:模型 PascalCase + @@map('snake_case'),字段 camelCase(DB 用 snake_case 时加 @map)。
    
    Prisma migrate 报 database does not exist,需要先创建数据库。用 npx prisma db push 或手动 createdb。如果是 Vercel Postgres 或 Supabase,确保 DATABASE_URL 指向正确的数据库实例。
    
    Vercel Hobby 计划函数超时 10s,Pro 计划 60s,Enterprise 900s。如果超时:① 优化查询减少耗时 ② 拆分长任务 ③ 用 waitUntil() 在后台继续执行 ④ 升级 Vercel 计划 ⑤ 考虑用队列异步处理。
    
    Next.js middleware 中 pathname 精确匹配失效,因为 intl 中间件处理后 pathname 含 locale 前缀(如 /zh/dashboard)。用 pathname.includes() 或 getLocaleFromPathname() 而非 pathname === '/dashboard'。
    查看历史

    55 回复

    1. 老张
      老张第 2 楼2025/05/03 10:08:23
      Prisma 连接池在 Serverless 环境设 connection_limit=1,加 ?pgbouncer=true。
    2. 数据
      数据淘金客第 3 楼2025/05/05 23:31:38
      我的理解是:hydration mismatch 一般是服务端客户端渲染不一致,加 suppressHydrationWarning 试试。
    3. 需求
      需求翻译机第 4 楼2025/05/07 05:38:46
      实操中我发现:Prisma $queryRaw 的 camelCase 列名必须加双引号,这是个经典坑。实践出真知,建议动手试试。
    4. 发呆
      发呆的仓鼠第 5 楼2025/05/11 14:55:13
      我的踩坑经验:Prisma 连接池在 Serverless 环境设 connection_limit=1,加 ?pgbouncer=true。如果有更好的方案求分享。
    5. 键盘
      键盘敲击者第 6 楼2025/05/12 16:51:24
      我的看法略有不同:revalidatePath 路径要含 locale 前缀,如 /zh/forum/thread/xxx。欢迎私信深入交流。
    6. 打工
      打工人之光第 7 楼2025/05/15 01:37:29
      从另一个角度看:useSession() 返回 null 检查 SessionProvider 是否包裹了组件。共同进步。
    7. 吃瓜
      吃瓜群众第 8 楼2025/05/15 19:20:01
      补充一个可能被忽略的点:Auth.js JWT 不更新是因为没处理 trigger === 'update',要加 useSession().update()。仅供参考,具体还是要看你的场景。
    8. 栈溢
      栈溢出幸存者第 9 楼2025/05/19 12:27:26
      我的踩坑经验:useSession() 返回 null 检查 SessionProvider 是否包裹了组件。欢迎交流讨论。
    9. 数星
      数星星第 10 楼2025/05/20 11:53:26
      这个问题我研究过一阵,revalidatePath 路径要含 locale 前缀,如 /zh/forum/thread/xxx。
    10. 差不
      差不多第 11 楼2025/05/25 06:25:31
      说个反直觉的发现:cookies().set() + redirect() 在 Server Component 不兼容,改用 Server Action。
    11. 快乐
      快乐的水豚第 12 楼2025/05/25 17:03:36
      补充一个边界情况:Prisma $queryRaw 的 camelCase 列名必须加双引号,这是个经典坑。
    12. BU
      Bug猎人第 13 楼2025/05/26 09:58:02
      cookies().set() + redirect() 在 Server Component 不兼容,改用 Server Action。
    13. 会议
      会议逃生专家第 14 楼2025/05/29 09:32:29
      上周刚好踩了这个坑,useSession() 返回 null 检查 SessionProvider 是否包裹了组件。期待更多实战经验分享。
    14. 林间
      林间晨露第 15 楼2025/05/29 22:52:03
      我的团队是这样做的:middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。
    15. 掘洞
      掘洞的兔第 16 楼2025/06/05 14:02:25
      这个方案我试过,middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。
    16. 拾光
      拾光者第 17 楼2025/06/05 19:22:00
      这个观点我很认同,middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。欢迎交流讨论。
    17. 接口
      接口焊接工第 18 楼2025/06/05 22:51:10
      上周刚好踩了这个坑,Prisma $queryRaw 的 camelCase 列名必须加双引号,这是个经典坑。细节可以再展开讨论。
    18. 精神
      精神小伙第 19 楼2025/06/12 19:52:51
      Prisma $queryRaw 的 camelCase 列名必须加双引号,这是个经典坑。
    19. 00
      007志愿者第 20 楼2025/06/18 01:36:54
      我的踩坑经验:next/dynamic + ssr:false 不能在 Server Component 用,要包一层 'use client'。这只是个人经验,不一定通用。
    20. 隔壁
      隔壁老王第 21 楼2025/06/18 04:05:22
      我做了类似的对比实验:middleware 里 pathname 含 locale 前缀,用 includes() 不要用精确匹配。欢迎大家补充。
    登录后可回复
    阿杰

    阿杰

    楼主个人主页

    帖子信息

    55 回复
    0 浏览
    7 赞
    0 收藏
    回复