我构建了一个 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— 验证凭据并设置 CookiePOST /api/auth/logout— 清除会话GET /api/auth/me— 获取当前用户
前端页面
- 登录页
- 注册页
- 仪表盘(受保护)
- 着陆页
工具
lib/jwt.ts— 使用 jose 签名和验证 JWTlib/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
- 大量重复复制粘贴相同的认证代码。