我构建了一个 CLI,能够在一分钟内为任何 Next.js 应用添加生产就绪的 auth

发布: (2026年2月25日 GMT+8 12:59)
3 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

每次我启动一个新的 Next.js 项目时,都要一遍又一遍地编写相同的认证代码:JWT 配置、bcrypt 哈希、httpOnly Cookie、Mongoose 模型、中间件保护、登录和注册页面。要把这些做好需要好几个小时,而且每次都是一样的工作。

于是我创建了 nextauthforge —— 一个 CLI 工具,能够在不到一分钟的时间内为任意使用 Next.js App Router 的项目脚手架出完整的认证系统。

入门

npx nextauthforge init

回答几个问题即可完成。

? What is your project name? my-app
? Which database are you using? MongoDB
? Include login & signup pages? Yes
? Include example dashboard? Yes

✓ Auth files scaffolded
✓ Dependencies installed
✓ AuthForge setup complete!

生成的文件

API 路由

  • POST /api/auth/signup — 注册并自动登录
  • POST /api/auth/login — 验证凭据并设置 Cookie
  • POST /api/auth/logout — 清除会话
  • GET /api/auth/me — 获取当前用户

前端页面

  • 登录页
  • 注册页
  • 仪表盘(受保护)
  • 着陆页

工具

  • lib/jwt.ts — 使用 jose 签名和验证 JWT
  • lib/hash.ts — bcrypt 辅助函数
  • lib/session.ts — Cookie 读取器
  • lib/dbConfig.ts — MongoDB 连接单例
  • hooks/useAuth.tsx — 客户端认证状态
  • components/ToasterProvider.tsx — toast 通知
  • proxy.ts — 中间件路由保护

设计决策

  • JWT 放在 httpOnly Cookie 中 – 而不是 localStorage。httpOnly Cookie 无法被 JavaScript 访问,从而免受 XSS 攻击。将令牌存放在 localStorage 是常见的安全错误。
  • 使用 jose 而非 jsonwebtoken – Next.js 中间件运行在 Edge Runtime 上,缺少 Node.js 的内置模块。jsonwebtoken 在中间件中会失效,而 jose 兼容 Web Crypto API,能够在 Next.js 的所有环境中工作。
  • bcrypt 使用 12 轮 – 故意设置较慢,以使暴力破解攻击变得不切实际。
  • 通用错误信息 – “用户未找到”和“密码错误”都会返回相同的 “Invalid credentials” 信息,防止邮箱枚举攻击。

路线图 (v1.0)

  • PostgreSQL + Prisma 支持
  • 刷新令牌
  • Google OAuth (npx nextauthforge add google)
  • GitHub OAuth
  • 邮件验证流程

安装与链接

  • npm:
  • GitHub:

反馈与贡献

欢迎社区提供反馈。如果你遇到任何问题或有功能需求,请在 GitHub 上打开 issue。

技术栈

  • Next.js 14+
  • MongoDB
  • jose
  • bcryptjs
  • 大量重复复制粘贴相同的认证代码。
0 浏览
Back to Blog

相关文章

阅读更多 »

三层响应式电子商务页眉

封面图片(Triple-Tier Responsive E-commerce Header) https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2...