用途:面向 Express.js 与 Node.js 应用的身份认证中间件,适合构建需要 JWT、OAuth 或自定义认证逻辑的 Express REST API、微服务与纯后端接口,不适用于 Next.js 应用(该类场景建议改用 Auth.js)。
主要能力:采用策略模式,可接入 500+ 种策略,常见包括 passport-jwt(API 认证)、passport-local(用户名密码)、passport-oauth2、passport-google-oauth20、passport-github2。可配合 jsonwebtoken 生成访问令牌与刷新令牌,结合 argon2 或 bcrypt 哈希密码,并通过中间件实现基于角色的授权与可选认证。
使用方式:安装 npm install passport passport-jwt jsonwebtoken,类型依赖用 npm install -D @types/passport @types/passport-jwt @types/jsonwebtoken。配置 JWT 策略时用 ExtractJwt.fromAuthHeaderAsBearerToken() 提取令牌,secretOrKey 读取环境变量 JWT_SECRET。在应用入口调用 app.use(passport.initialize()),受保护路由使用 passport.authenticate('jwt', { session: false })。注册与登录接口中生成 accessToken(如 15m)与 refreshToken(如 7d),刷新接口用 jwt.verify 校验后重新签发。可编写 requireRole 做角色控制、optionalAuth 做可选登录,并可集成 tRPC 的 createExpressMiddleware。环境变量需设置 JWT_SECRET 与 JWT_REFRESH_SECRET。
适用场景:Express.js REST API、需要多种认证策略、自定义认证逻辑、JWT 纯 API 等。
限制与注意事项:无状态 JWT 认证应使用 session: false;密码必须哈希;访问令牌应短有效期,刷新令牌建议存 httpOnly cookie;避免在 JWT 载荷放敏感数据、避免 localStorage 存储令牌、避免弱密钥。资料未提供价格、平台范围与性能指标等信息。