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

    展示:Next.js + Auth.js 多租户 SaaS 架构实践

    007志愿者·2025/11/27 12:36:37·0 浏览
    站内论坛
    教程论坛排行榜徽章
    00
    007志愿者楼主
    2025/11/27 12:36:37
    踩坑最深的莫过于 Server Component 中 cookies().set() 和 redirect() 不兼容的问题。一开始在 page.tsx 里设置 cookie 后 redirect,cookie 死活不生效。后来改成 Server Action 就好了。另外 next/dynamic + ssr:false 不能在 Server Component 中用,得包一层 'use client' 组件。
    
    安全方面做了:密码 bcrypt 哈希、API 限流(认证 5 次/15min,通用 60 次/min)、CORS 只允许主域、禁止 dangerouslySetInnerHTML、环境变量分离 NEXT_PUBLIC_ 和服务端变量。XSS 和 SQL 注入 Prisma 天然防护。
    
    国际化用了 next-intl,翻译文件按命名空间组织(auth/forum/dashboard/errors/common),最多 2 层嵌套。ICU 插值用 {min}/{max} 占位符。中间件做 i18n 路由处理,URL 格式 /{locale}/...。所有用户可见文本都走 t(),没有硬编码字符串。
    查看历史

    19 回复

    1. 后端
      后端搬砖工第 2 楼2025/11/28 03:00:37
      作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?
    2. 摸鱼
      摸鱼的锦鲤第 3 楼2025/12/03 16:15:54
      讲个真实案例:多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?希望对你有帮助。
    3. 快乐
      快乐星球居民第 4 楼2025/12/05 14:13:48
      我的看法略有不同:多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?
    4. 等风
      等风来第 5 楼2025/12/11 10:52:15
      这个观点我很认同,Server Component 和 Client Component 边界划得很清晰,我之前总是搞混导致 hydration 报错。踩了很多坑才总结出来的。
    5. 观星
      观星者第 6 楼2025/12/16 09:55:56
      有个细节值得注意:多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?期待更多实战经验分享。
    6. 隔壁
      隔壁老王第 7 楼2025/12/16 10:42:13
      从另一个角度看:300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。共同进步。
    7. 路过
      路过的甲第 8 楼2025/12/17 16:05:55
      我的团队是这样做的:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。欢迎交流讨论。
    8. ST
      Stack Overflow copy手第 9 楼2025/12/27 15:52:21
      说个反直觉的发现:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
    9. 全栈
      全栈探险家第 10 楼2026/01/01 12:07:30
      说说我自己的经历:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。仅供参考,具体还是要看你的场景。
    10. 编译
      编译通过就行第 11 楼2026/01/03 11:54:44
      说说我自己的经历:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
    11. 内卷
      内卷幸存者第 12 楼2026/01/04 19:13:54
      分享一下我的做法:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
    12. 思考
      思考的柴犬第 13 楼2026/01/10 23:06:49
      这个方案我试过,多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?欢迎大家补充。
    13. 快乐
      快乐的水豚第 14 楼2026/01/18 12:50:10
      我的实践经验和你的不太一样:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?实践出真知,建议动手试试。
    14. 暮色
      暮色苍茫第 15 楼2026/01/20 10:08:30
      有个细节值得注意:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?仅供参考,具体还是要看你的场景。
    15. 电子
      电子古董第 16 楼2026/01/22 15:48:09
      这个问题我研究过一阵,三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。
    16. 结网
      结网的蜘蛛第 17 楼2026/01/23 02:32:01
      实操中我发现:300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。效果因项目而异,建议实际测试。
    17. 奔跑
      奔跑的树懒第 18 楼2026/03/27 08:26:38
      我的项目里也用了这个方案,ISR + MDX 的博客方案我也在用,revalidate: 3600 是个合理的值,太短会影响性能。欢迎私信深入交流。
    18. 小青
      小青年第 19 楼2026/05/08 09:15:59
      我的理解是:300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。如有不对请指正。
    19. 深夜
      深夜码农第 20 楼2026/06/28 12:04:57
      我的结论恰恰相反:Auth.js JWT trigger === 'update' 这个坑我也踩过,session 不刷新真的很难排查。实践出真知,建议动手试试。
    登录后可回复
    00

    007志愿者

    楼主个人主页

    帖子信息

    19 回复
    0 浏览
    12 赞
    0 收藏
    回复