菜单

认证系统

相关源文件

roadmap.sh 平台中的认证系统提供了用户注册、登录和会话管理功能。它支持多种认证提供商,并支持个性化功能,如进度跟踪、团队协作和自定义路线图。本文档详细介绍了代码库中的认证架构、流程和实现。

认证架构

认证系统围绕使用 JWT(JSON Web Tokens)的基于令牌的架构构建。它支持多种认证提供商,并处理前端认证流程和后端 API 通信。

来源

认证提供商

该平台支持多种认证提供商,每个提供商都作为独立的组件实现,并拥有自己的认证流程。

提供商组件API 端点
GitHubGitHubButton/v1-github-login, /v1-github-callback
GoogleGoogleButton/v1-google-login, /v1-google-callback
LinkedInLinkedInButton/v1-linkedin-login, /v1-linkedin-callback
电子邮件EmailLoginForm, EmailSignupForm/v1-login, /v1-register

来源

OAuth 认证流程

系统为社交认证提供商实现了标准的 OAuth 流程。下图说明了该过程:

来源

电子邮件认证流程

对于基于电子邮件的认证,系统实现了注册、验证和登录流程。

来源

令牌管理和 API 认证

系统使用存储在 cookie 中的 JWT 令牌来维护用户会话。所有 API 请求都在 Authorization 头部中包含此令牌。

HTTP 客户端自动将认证令牌附加到所有请求。

来源

用户会话管理

系统通过各种实用程序处理用户会话。

  1. 导航和注销:
  1. 维护会话上下文:

来源

认证状态和重定向

系统维护认证状态并处理智能重定向。

  1. 它跟踪认证前的原始页面,以便在登录后将用户重定向回去。
  2. 它处理首次登录以显示适当的引导流程。
  3. 它管理 UTM 参数以跟踪用户注册来源。

认证流程维护用户导航的上下文。

  1. 在认证前存储当前页面路径。
  2. 重定向到 OAuth 提供商时存储时间戳。
  3. 认证成功后,重定向回原始页面。

来源

错误处理

认证系统在多个层面实现了错误处理。

  1. 提供商级别错误:每个认证组件处理来自其特定提供商的错误。
  2. HTTP 客户端错误:HTTP 客户端捕获并格式化来自 API 响应的错误。
  3. 表单验证错误:输入验证在提交前进行,并显示相应的消息。

OAuth 流程中的错误处理示例。

1. Initial request fails -> Show error message in button component
2. OAuth provider returns error -> Handle in callback, show error message
3. Backend validation fails -> Display formatted error from API
4. Token invalid (401) -> Automatically logout and reload page

来源

与其他系统集成

认证系统与其他平台功能集成。

来源

总结

roadmap.sh 平台中的认证系统为用户认证提供了全面的解决方案,包括多提供商支持、会话管理和安全的 API 通信。基于令牌的架构确保了对认证功能的安全访问,同时保持了流畅的用户体验。