dramaling-app/docs/02_design/function-specs/mobile/user-authentication-mobile.md

306 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 用戶認證功能規格文檔
## 📋 功能概述
**功能名稱**: 用戶認證與帳戶管理系統
**建立日期**: 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