关于 auth-module-builder
面向 Web 应用开发者的认证模块构建技能。内容涵盖路由、中间件、密码处理、JWT 或会话模式,以及针对常见威胁的安全检查。
主要功能
- 01定义常见认证路由
- 02添加认证中间件
- 03使用 bcrypt 哈希和验证密码
- 04采用 JWT 或存储式会话
- 05实施 Cookie 与 CSRF 防护
- 06应对常见认证威胁
适用场景
- 01构建登录与注册流程
- 02添加令牌刷新和密码重置路由
- 03使用 Redis 或数据库存储会话
- 04检查认证端点的防护措施
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill auth-module-builder安装后在 Claude Code 中输入/auth-module-builder确认已加载。
详细介绍
身份验证模块构建器
实现安全、可用于生产环境的身份验证系统。
核心组件
路由:POST /login、/register、/logout、/refresh、/forgot-password 中间件:authenticate、requireAuth、optionalAuth 安全性:bcrypt 哈希、JWT 签名、安全 Cookie、CSRF 令牌 会话:Redis/DB 存储、过期时间、刷新令牌 威胁:记录常见攻击及其缓解措施
JWT 模式
// Generate tokens
const accessToken = jwt.sign(
{ userId: user.id, email: user.email },
process.env.JWT_SECRET,
{ expiresIn: "15m" }
);
const refreshToken = jwt.sign(
{ userId: user.id, type: "refresh" },
process.env.JWT_REFRESH_SECRET,
{ expiresIn: "7d" }
);
// Verify middleware
export const authenticate = async (req, res, next) => {
const token = req.headers.authorization?.split(" ")[1];
if (!token) return res.status(401).json({ error: "No token" });
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = await User.findById(decoded.userId);
next();
} catch (err) {
res.status(401).json({ error: "Invalid token" });
}
};
会话模式
// Express session with Redis
app.use(
session({
store: new RedisStore({ client: redisClient }),
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24 * 7, // 7 days
sameSite: "lax",
},
})
);
密码安全
import bcrypt from "bcrypt";
// Hash password
const hashedPassword = await bcrypt.hash(password, 10);
// Verify password
const isValid = await bcrypt.compare(password, user.hashedPassword);
安全检查清单
- 使用 bcrypt 对密码进行哈希处理(cost ≥10)
- JWT 密钥从环境变量中获取,并定期轮换
- 生产环境中仅使用 HTTPS
- 使用 httpOnly、secure Cookie
- 启用 CSRF 防护
- 对身份验证路由进行速率限制
- 多次尝试失败后锁定账户
- 密码重置令牌设有过期时间
- 新账户需进行电子邮件验证
威胁模型
暴力破解:速率限制 + 账户锁定 令牌窃取:较短的过期时间、httpOnly Cookie、仅使用 HTTPS CSRF:SameSite Cookie + CSRF 令牌 会话固定:登录时重新生成会话 ID XSS:清理输入内容、设置 CSP 标头
评论
支持 Markdown