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