# 用戶認證功能規格文檔 ## 📋 功能概述 **功能名稱**: 用戶認證與帳戶管理系統 **建立日期**: 2025-09-08 **最後更新**: 2025-09-08 **負責團隊**: 產品/設計/開發 ### 主要功能 - 多元化註冊登入:支援電子郵件、社交媒體、手機號碼等方式 - 安全密碼管理:密碼重置、變更和安全性驗證機制 - 帳戶資料管理:個人資料編輯、隱私設定和偏好配置 - 多帳戶支援:帳戶切換、合併和管理功能 - 安全性保護:雙重驗證、登入歷史和異常檢測 ### 適用場景 - 新用戶首次使用應用程式的註冊流程 - 既有用戶的日常登入和帳戶存取 - 忘記密碼或帳戶資訊的找回流程 - 多平台帳戶的統一管理和同步 - 帳戶安全性的維護和提升 ### 與其他功能的關聯 - **學習進度系統**: 帳戶綁定學習記錄和成就數據 - **社交功能**: 好友關係和社群互動的身份基礎 - **訂閱系統**: 付費狀態和VIP權限的帳戶關聯 - **道具商店**: 購買記錄和虛擬資產的帳戶歸屬 - **個人化系統**: 學習偏好和介面設定的用戶配置 ## 📱 涉及的UI畫面 ### 主要畫面 1. **UI_Login_Main** - 主要登入頁面 2. **UI_SignUp_Main** - 用戶註冊頁面 3. **UI_PasswordReset_Form** - 密碼重置表單 4. **UI_PasswordReset_Popup** - 密碼重置確認彈窗 5. **UI_Account_List** - 帳戶列表管理頁面 6. **UI_Account_Option** - 帳戶選項設定頁面 ### 輔助畫面 1. **UI_Profile_Settings** - 個人資料設定頁面 2. **UI_Onboarding_Welcome** - 新用戶歡迎引導 3. **雙重驗證設定頁面** - 安全性強化功能 4. **隱私設定頁面** - 個人資料隱私控制 ## 🎯 詳細畫面規格 ### UI_Login_Main - 主要登入頁面 #### 功能說明 - **畫面目的**: 提供既有用戶安全快捷的登入體驗,支援多種認證方式 - **進入條件**: 應用程式啟動時檢測到未登入狀態,或用戶主動登出後 - **退出條件**: 成功完成身份驗證進入主應用,或切換到註冊流程 #### 畫面欄位細節 | 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 | |---------|---------|------|--------|----------|----------| | 電子郵件/用戶名 | String | 是 | - | 電子郵件格式或3-20字用戶名 | 始終顯示 | | 密碼 | String | 是 | - | 8-50字,包含字母和數字 | 始終顯示 | | 記住我選項 | Boolean | 否 | false | true/false | 始終顯示 | | 自動登入選項 | Boolean | 否 | false | true/false | 記住我勾選後顯示 | | 驗證碼 | String | 否 | - | 4-6位數字或字母 | 異常登入時顯示 | | 錯誤提示訊息 | String | 否 | - | 錯誤訊息文字 | 登入失敗時顯示 | | 登入歷史提示 | String | 否 | - | 上次登入資訊 | 成功登入用戶顯示 | #### 互動元素 | 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 | |---------|---------|----------|----------|------| | 登入按鈕 | 按鈕 | 提交登入表單進行驗證 | 正常->載入中 | 主要行動按鈕 | | Google登入按鈕 | 按鈕 | 跳轉Google OAuth流程 | - | 第三方登入選項 | | Facebook登入按鈕 | 按鈕 | 跳轉Facebook OAuth流程 | - | 第三方登入選項 | | Apple登入按鈕 | 按鈕 | 跳轉Apple Sign In流程 | - | iOS平台優先顯示 | | 忘記密碼連結 | 連結 | 跳轉密碼重置流程 | - | 幫助用戶找回密碼 | | 註冊帳號連結 | 連結 | 跳轉註冊頁面 | - | 新用戶註冊入口 | | 顯示/隱藏密碼 | 按鈕 | 切換密碼顯示狀態 | 隱藏<->顯示 | 提升輸入體驗 | | 遊客模式按鈕 | 按鈕 | 以遊客身份進入應用 | - | 功能限制的體驗模式 | #### 使用者操作流程 1. **表單填寫**: 輸入帳號密碼 → 選擇記住選項 → 確認輸入無誤 2. **身份驗證**: 提交登入 → 系統驗證 → 安全性檢查 → 成功登入 3. **第三方登入**: 選擇第三方平台 → OAuth授權 → 帳戶綁定 → 完成登入 4. **異常處理**: 登入失敗 → 查看錯誤提示 → 修正資訊 → 重新嘗試 #### 異常狀況處理 - **密碼錯誤**: 顯示錯誤次數 → 3次後要求驗證碼 → 5次後暫時鎖定 - **帳號不存在**: 提示帳號不存在 → 引導到註冊頁面 → 或檢查輸入錯誤 - **網路問題**: 顯示連線錯誤 → 提供重試選項 → 或啟用離線模式 - **安全異常**: 檢測到異常登入 → 要求額外驗證 → 發送安全通知 ### UI_SignUp_Main - 用戶註冊頁面 #### 功能說明 - **畫面目的**: 引導新用戶完成帳戶創建,收集必要資訊並建立學習檔案 - **進入條件**: 從登入頁面點擊註冊,或首次使用應用程式 - **退出條件**: 成功建立帳戶進入歡迎流程,或返回登入頁面 #### 畫面欄位細節 | 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 | |---------|---------|------|--------|----------|----------| | 電子郵件 | String | 是 | - | 有效電子郵件格式 | 始終顯示 | | 用戶名 | String | 是 | - | 3-20字,僅字母數字底線 | 始終顯示 | | 密碼 | String | 是 | - | 8-50字,包含大小寫字母、數字 | 始終顯示 | | 確認密碼 | String | 是 | - | 必須與密碼欄位相同 | 始終顯示 | | 真實姓名 | String | 否 | - | 2-50字 | 始終顯示 | | 出生年月 | Date | 否 | - | 合理年齡範圍 | 始終顯示 | | 學習目標 | Select | 否 | - | 預設選項清單 | 始終顯示 | | 英語程度 | Select | 是 | "初學者" | 初學者/中級/高級 | 始終顯示 | | 服務條款同意 | Boolean | 是 | false | 必須為true | 始終顯示 | | 隱私政策同意 | Boolean | 是 | false | 必須為true | 始終顯示 | | 行銷資訊同意 | Boolean | 否 | false | true/false | 始終顯示 | #### 互動元素 | 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 | |---------|---------|----------|----------|------| | 註冊按鈕 | 按鈕 | 提交註冊表單 | 正常->載入中 | 驗證通過後啟用 | | 用戶名檢查按鈕 | 按鈕 | 檢查用戶名可用性 | 正常->檢查中 | 即時驗證功能 | | 密碼強度指示器 | 進度條 | 顯示密碼強度 | 弱->中->強 | 即時回饋 | | 服務條款連結 | 連結 | 開啟服務條款頁面 | - | 在新視窗開啟 | | 隱私政策連結 | 連結 | 開啟隱私政策頁面 | - | 在新視窗開啟 | | 返回登入連結 | 連結 | 返回登入頁面 | - | 既有用戶快速通道 | | Google快速註冊 | 按鈕 | Google帳戶快速建立 | - | 簡化註冊流程 | ### UI_PasswordReset_Form - 密碼重置表單 #### 功能說明 - **畫面目的**: 幫助忘記密碼的用戶安全地重設新密碼 - **進入條件**: 從登入頁面點擊"忘記密碼"連結 - **退出條件**: 成功重置密碼返回登入頁面,或取消返回登入 #### 畫面欄位細節 | 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 | |---------|---------|------|--------|----------|----------| | 電子郵件/用戶名 | String | 是 | - | 有效格式 | 第一步顯示 | | 驗證碼 | String | 是 | - | 6位數字 | 第二步顯示 | | 新密碼 | String | 是 | - | 8-50字,強度要求 | 第三步顯示 | | 確認新密碼 | String | 是 | - | 必須與新密碼相同 | 第三步顯示 | | 步驟指示器 | Number | 是 | 1 | 1-3 | 始終顯示 | #### 互動元素 | 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 | |---------|---------|----------|----------|------| | 發送驗證碼按鈕 | 按鈕 | 發送郵件驗證碼 | 正常->發送中 | 60秒冷卻時間 | | 驗證並繼續按鈕 | 按鈕 | 驗證碼確認進入下一步 | 正常->驗證中 | 驗證成功後進入重置 | | 完成重置按鈕 | 按鈕 | 提交新密碼完成重置 | 正常->處理中 | 最終確認按鈕 | | 重新發送按鈕 | 按鈕 | 重新發送驗證碼 | 禁用->啟用 | 冷卻時間後可用 | | 返回登入按鈕 | 按鈕 | 取消重置返回登入 | - | 任何步驟都可返回 | ### UI_Account_List - 帳戶列表管理頁面 #### 功能說明 - **畫面目的**: 管理用戶的多個帳戶,支援帳戶切換和統一管理 - **進入條件**: 從個人設定進入帳戶管理,或多帳戶切換需求 - **退出條件**: 選擇目標帳戶完成切換,或完成帳戶管理操作 #### 畫面欄位細節 | 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 | |---------|---------|------|--------|----------|----------| | 當前活躍帳戶 | Object | 是 | - | 帳戶物件 | 始終顯示 | | 關聯帳戶列表 | Array | 是 | [] | 帳戶陣列 | 有多帳戶時顯示 | | 帳戶類型標記 | String | 是 | - | 本地/Google/Facebook/Apple | 每個帳戶顯示 | | 最後登入時間 | DateTime | 是 | - | 日期時間格式 | 每個帳戶顯示 | | 同步狀態 | String | 是 | "已同步" | 已同步/同步中/同步失敗 | 每個帳戶顯示 | #### 互動元素 | 元素名稱 | 元素類型 | 點擊行為 | 狀態變化 | 備註 | |---------|---------|----------|----------|------| | 切換帳戶按鈕 | 按鈕 | 切換到選中帳戶 | 當前->目標 | 需要重新驗證 | | 添加帳戶按鈕 | 按鈕 | 綁定新的登入方式 | - | 支援多平台綁定 | | 帳戶設定按鈕 | 按鈕 | 進入特定帳戶設定 | - | 跳轉到帳戶選項 | | 解除綁定按鈕 | 按鈕 | 解除帳戶關聯 | 綁定->解綁 | 需要確認操作 | | 同步資料按鈕 | 按鈕 | 手動同步學習資料 | 正常->同步中 | 確保資料一致性 | | 合併帳戶按鈕 | 按鈕 | 合併重複帳戶資料 | - | 高級帳戶管理功能 | ## 🔄 完整使用者流程 ### 新用戶註冊流程 ``` [首次開啟應用] → [選擇註冊方式] ↓ [UI_SignUp_Main 填寫註冊資訊] → [驗證並建立帳戶] ↓ [UI_Onboarding_Welcome 歡迎引導] → [進入主應用功能] ``` ### 用戶登入流程 ``` [開啟應用] → [UI_Login_Main 登入頁面] ↓ [選擇登入方式] → [身份驗證] → [安全檢查] ↓ [成功登入] → [載入用戶資料] → [進入主功能] ``` ### 密碼重置流程 ``` [忘記密碼] → [UI_PasswordReset_Form 重置表單] ↓ [輸入帳號] → [發送驗證碼] → [驗證身份] ↓ [設定新密碼] → [UI_PasswordReset_Popup 成功確認] → [返回登入] ``` ### 帳戶管理流程 ``` [個人設定] → [UI_Account_List 帳戶列表] ↓ [選擇管理操作] → [UI_Account_Option 帳戶選項] ↓ [完成設定變更] → [同步更新] → [確認生效] ``` ## 📊 商業邏輯規則 ### 帳戶安全策略 - **密碼要求**: 最少8位,包含大小寫字母、數字和特殊字符 - **登入限制**: 5次錯誤後鎖定1小時,異常IP需要額外驗證 - **會話管理**: 7天免登入期限,跨設備最多3個活躍會話 - **資料加密**: 敏感資訊AES-256加密,傳輸TLS 1.3保護 ### 用戶體驗優化 - **記住登入**: 本地設備保存登入狀態,提升使用便利性 - **快速註冊**: 第三方OAuth整合,降低註冊門檻 - **帳戶合併**: 智能檢測重複帳戶,提供合併建議 - **資料同步**: 跨設備即時同步學習進度和個人設定 ### 隱私保護機制 - **最小化收集**: 僅收集功能必需的個人資訊 - **用戶控制**: 提供完整的資料查看、修改、刪除權限 - **透明化處理**: 清楚說明資料用途和處理方式 - **合規要求**: 遵循GDPR、CCPA等國際隱私法規 ## 🧪 測試要點 ### 功能測試 - [ ] 各種登入方式都能正常運作 - [ ] 註冊流程完整且資料正確保存 - [ ] 密碼重置郵件發送和驗證有效 - [ ] 帳戶切換功能正常且資料同步 - [ ] 安全驗證機制有效防護 - [ ] 第三方OAuth整合穩定可靠 ### 安全性測試 - [ ] 密碼加密存儲和傳輸安全 - [ ] SQL注入和XSS攻擊防護 - [ ] 暴力破解和撞庫攻擊防禦 - [ ] 會話劫持和CSRF攻擊保護 - [ ] 敏感資料洩露風險評估 ### 用戶體驗測試 - [ ] 表單填寫體驗流暢直觀 - [ ] 錯誤提示資訊清楚有幫助 - [ ] 載入時間和響應速度acceptable - [ ] 跨設備登入同步快速準確 - [ ] 輔助功能和無障礙設計完善 ## 📝 開發注意事項 ### 前端開發 - 敏感資訊輸入需要即時驗證和安全處理 - 第三方OAuth需要正確處理回調和錯誤狀態 - 表單驗證需要前後端雙重檢查 - 會話狀態需要安全存儲和定期檢查 ### 後端開發 - 用戶密碼需要使用bcrypt等安全雜湊算法 - JWT令牌需要適當的過期時間和刷新機制 - 用戶資料需要嚴格的訪問控制和權限檢查 - 登入日誌需要完整記錄用於安全分析 ### 整合注意事項 - 第三方服務需要處理服務中斷和API變更 - 資料庫操作需要事務處理和併發控制 - 郵件服務需要可靠的發送和重試機制 - 監控系統需要實時檢測異常登入行為 ## 📚 參考資源 - **UI截圖**: - `docs/02_design/views/UI_Login_Main.png` - `docs/02_design/views/UI_SignUp_Main.png` - `docs/02_design/views/UI_PasswordReset_Form.png` - `docs/02_design/views/UI_Account_List.png` - **API文檔**: `docs/04_technical/api/authentication.md` - **設計規範**: `docs/02_design/ui-ux-guidelines.md` - **安全規範**: `docs/04_technical/security-guidelines.md` ## 📅 版本歷史 | 版本 | 日期 | 修改內容 | 修改者 | |-----|------|----------|--------| | v1.0 | 2025-09-08 | 初始版本建立,完整用戶認證流程設計 | Claude AI | --- **文檔狀態**: 🟢 已完成 **最後檢查**: 2025-09-08 **下次檢查**: 2025-09-15