348 lines
14 KiB
Markdown
348 lines
14 KiB
Markdown
# 用戶認證功能規格文檔 (Web版)
|
||
|
||
## 📋 功能概述
|
||
|
||
**功能名稱**: 用戶認證與權限管理系統 (Web端)
|
||
**建立日期**: 2025-09-11
|
||
**最後更新**: 2025-09-11
|
||
**負責團隊**: 前端Web/設計/開發
|
||
**對應Mobile規格**: `../mobile/user-authentication-mobile.md`
|
||
|
||
### 整合共用規範
|
||
> 本規格基於以下共用模組,請參閱對應規格文件:
|
||
> - **[共同業務規則](../common/business-rules.md)** - 完整的用戶認證與權限系統
|
||
> - **[用戶流程圖](../common/user-flow-diagrams.md)** - 認證流程設計
|
||
|
||
### 主要功能 (基於共用業務規則)
|
||
- **多重認證方式**: Email註冊、第三方登入 (Google、Apple)
|
||
- **用戶等級分級**: 免費用戶、試用用戶、訂閱用戶、進階用戶、高價值用戶
|
||
- **會話管理**: JWT Token機制、自動續期、多設備登入控制
|
||
- **密碼安全**: bcrypt加密、複雜度驗證、歷史記錄防護
|
||
- **帳戶安全**: 異地登入驗證、失敗次數限制、帳戶鎖定機制
|
||
- **訂閱管理**: 7天免費體驗、月費/年費訂閱、自動續訂
|
||
|
||
### Web端特色功能
|
||
- **多標籤會話**: 同一帳戶支援多個瀏覽器標籤
|
||
- **記住登入**: 最長90天的免密碼登入
|
||
- **桌面通知**: 帳戶安全事件的桌面提醒
|
||
- **密碼管理整合**: 與瀏覽器密碼管理器整合
|
||
- **企業登入**: SSO單點登入支援
|
||
- **進階安全**: 雙因素認證 (2FA) 選項
|
||
|
||
### 適用場景
|
||
- 桌面環境的安全性要求較高的登入
|
||
- 需要長期會話保持的學習環境
|
||
- 企業用戶的統一身份認證
|
||
- 多設備學習進度同步需求
|
||
|
||
### 與其他功能的關聯
|
||
- **用戶等級系統**: 不同等級用戶的功能權限差異
|
||
- **訂閱系統**: 付費用戶的權益管理和自動續訂
|
||
- **學習進度**: 跨設備的學習資料同步
|
||
- **道具商店**: 購買權限和支付驗證
|
||
- **社群功能**: 好友系統和競爭排行榜
|
||
|
||
## 💻 涉及的Web頁面 (認證系統架構)
|
||
|
||
### 主要頁面
|
||
1. **Page_Login_W** - 登入頁面 (Web版)
|
||
2. **Page_Register_W** - 註冊頁面 (Web版)
|
||
3. **Page_Password_Reset_W** - 密碼重設頁面 (Web版)
|
||
4. **Page_Profile_Settings_W** - 用戶資料設定頁面 (Web版)
|
||
5. **Page_Account_Security_W** - 帳戶安全設定頁面 (Web版)
|
||
|
||
### Web專用頁面
|
||
1. **Page_SSO_Login_W** - 企業單點登入頁面 (Web專用)
|
||
2. **Page_Two_Factor_Auth_W** - 雙因素認證設定頁面 (Web專用)
|
||
3. **Page_Session_Management_W** - 會話管理頁面 (Web專用)
|
||
|
||
### 訂閱相關頁面
|
||
1. **Page_Subscription_Plans_W** - 訂閱方案頁面 (Web版)
|
||
2. **Page_Trial_Activation_W** - 免費體驗啟動頁面 (Web版)
|
||
3. **Page_Subscription_Management_W** - 訂閱管理頁面 (Web版)
|
||
|
||
### 輔助頁面
|
||
1. **Modal_Auth_Confirm_W** - 身份驗證確認模態視窗
|
||
2. **Modal_Session_Timeout_W** - 會話逾時提醒視窗
|
||
3. **Page_Account_Verification_W** - 帳戶驗證頁面
|
||
|
||
## 🎯 詳細頁面規格 (基於共用業務規則)
|
||
|
||
### Page_Login_W - 登入頁面
|
||
|
||
#### 功能說明 (整合共用規範)
|
||
- **頁面目的**: 用戶安全登入和身份驗證
|
||
- **認證規則**: 參考 [共同業務規則 - 用戶認證](../common/business-rules.md#🔑-用戶註冊與認證規則)
|
||
- **會話管理**: 參考 [共同業務規則 - 會話管理](../common/business-rules.md#br-auth-03-會話管理規則)
|
||
|
||
#### 登入方式支援
|
||
基於共用業務規則的多重認證機制:
|
||
- **Email + 密碼**: 傳統登入方式
|
||
- **Google 登入**: OAuth 2.0 整合
|
||
- **Apple ID 登入**: Sign in with Apple
|
||
- **記住登入**: 最長90天免密碼登入
|
||
- **企業SSO**: 單點登入整合 (Web專用)
|
||
|
||
#### 安全機制整合
|
||
基於 [共同業務規則 - 密碼安全](../common/business-rules.md#br-auth-02-密碼安全規則):
|
||
- **失敗限制**: 連續5次錯誤鎖定15分鐘
|
||
- **異地驗證**: 異常登入地點的安全驗證
|
||
- **會話控制**: 最多3個設備同時登入
|
||
|
||
#### 頁面欄位細節
|
||
|
||
| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|
||
|---------|---------|------|--------|----------|----------|
|
||
| Email輸入框 | String | 是 | - | Email格式 | 始終顯示 |
|
||
| 密碼輸入框 | String | 是 | - | 8-128字符 | 始終顯示 |
|
||
| 記住登入選項 | Boolean | 否 | false | true/false | 複選框 |
|
||
| 登入失敗計數 | Number | 是 | 0 | 0-5 | 錯誤時顯示 |
|
||
| 異地登入警示 | Boolean | 否 | false | true/false | 檢測到異地時 |
|
||
| 會話有效期 | Number | 是 | 7 | 1-90天 | 記住登入時 |
|
||
| 雙因素認證碼 | String | 否 | - | 6位數字 | 開啟2FA時 |
|
||
| 登入地點資訊 | Object | 是 | {} | 地點物件 | 安全記錄 |
|
||
|
||
#### Web版互動元素
|
||
|
||
| 元素名稱 | 元素類型 | 操作方式 | 快捷鍵 | 狀態變化 | 備註 |
|
||
|---------|---------|----------|--------|----------|------|
|
||
| Email輸入框 | 輸入框 | 點擊/Tab | Tab | 空白→輸入中 | 自動填入支援 |
|
||
| 密碼輸入框 | 密碼框 | 點擊/Tab | Tab | 空白→輸入中 | 顯示/隱藏切換 |
|
||
| 顯示密碼按鈕 | 按鈕 | 點擊/Ctrl+H | Ctrl+H | 隱藏↔顯示 | 密碼可見性 |
|
||
| 記住登入勾選 | 複選框 | 點擊/空白鍵 | Space | 未勾↔已勾 | 持久會話 |
|
||
| 登入按鈕 | 按鈕 | 點擊/Enter | Enter | 正常→處理中 | 主要行動 |
|
||
| Google登入按鈕 | 按鈕 | 點擊/Ctrl+G | Ctrl+G | 正常→跳轉中 | OAuth跳轉 |
|
||
| Apple ID登入 | 按鈕 | 點擊/Ctrl+A | Ctrl+A | 正常→跳轉中 | OAuth跳轉 |
|
||
| 忘記密碼連結 | 連結 | 點擊/Alt+F | Alt+F | - | 密碼重設 |
|
||
| 註冊連結 | 連結 | 點擊/Alt+R | Alt+R | - | 新用戶註冊 |
|
||
|
||
### Page_Register_W - 註冊頁面
|
||
|
||
#### 功能說明 (整合帳戶唯一性)
|
||
- **頁面目的**: 新用戶帳戶註冊和初始設定
|
||
- **唯一性規則**: 參考 [共同業務規則 - 帳戶註冊](../common/business-rules.md#br-auth-01-帳戶註冊規則)
|
||
- **密碼規則**: 參考 [共同業務規則 - 密碼安全](../common/business-rules.md#br-auth-02-密碼安全規則)
|
||
|
||
#### 註冊驗證機制
|
||
- **Email唯一性**: 一個Email只能註冊一個帳戶
|
||
- **第三方整合**: Google、Apple帳戶不能與已註冊Email重複
|
||
- **用戶名檢查**: 即時檢查用戶名可用性
|
||
- **密碼強度**: 大小寫字母+數字,最少8字符
|
||
|
||
#### 初始化獎勵
|
||
基於 [共同業務規則 - 鑽石消費](../common/business-rules.md#br-pay-02-鑽石消費規則):
|
||
- **註冊贈送**: 新用戶註冊贈送1500鑽石
|
||
- **初始命條**: 新用戶獲得5個命條
|
||
- **體驗引導**: 自動啟動新手教學
|
||
|
||
#### 頁面欄位細節
|
||
|
||
| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|
||
|---------|---------|------|--------|----------|----------|
|
||
| 用戶名稱 | String | 是 | - | 3-20字符 | 始終顯示 |
|
||
| Email地址 | String | 是 | - | Email格式 | 始終顯示 |
|
||
| 密碼 | String | 是 | - | 8-128字符 | 始終顯示 |
|
||
| 確認密碼 | String | 是 | - | 與密碼相同 | 始終顯示 |
|
||
| 用戶名可用性 | Boolean | 是 | false | true/false | 即時檢查 |
|
||
| Email唯一性 | Boolean | 是 | false | true/false | 即時檢查 |
|
||
| 密碼強度等級 | Number | 是 | 0 | 1-4級 | 強度指示器 |
|
||
| 服務條款同意 | Boolean | 是 | false | true/false | 必須同意 |
|
||
| 隱私政策同意 | Boolean | 是 | false | true/false | 必須同意 |
|
||
| 行銷通知同意 | Boolean | 否 | false | true/false | 可選項 |
|
||
|
||
### Page_Subscription_Plans_W - 訂閱方案頁面
|
||
|
||
#### 功能說明 (整合訂閱系統)
|
||
- **頁面目的**: 展示訂閱方案和免費體驗
|
||
- **訂閱規則**: 參考 [共同業務規則 - 付費用戶分級](../common/business-rules.md#br-user-01-付費用戶分級規則)
|
||
- **體驗機制**: 7天免費體驗訂閱
|
||
|
||
#### 訂閱方案架構
|
||
基於共用業務規則的用戶等級系統:
|
||
|
||
**試用用戶**:
|
||
- 期限:7天免費體驗訂閱
|
||
- 權益:完整功能體驗
|
||
- 轉換:試用期結束後需選擇訂閱或取消
|
||
|
||
**訂閱用戶**:
|
||
- 定價:NT$600/月 或 NT$6,000/年 (8.3折優惠)
|
||
- 權益:無限制學習次數,進階統計報告
|
||
- 特權:每日3次免費限時挑戰,命條恢復加速
|
||
|
||
**進階用戶** (第二階段):
|
||
- 定價:NT$900/月 或 NT$9,000/年 (8.3折優惠)
|
||
- 權益:訂閱用戶功能 + 進階自訂學習功能 + 優質TTS
|
||
- 特權:更多命條上限,更快回復速度,專屬學習模式
|
||
|
||
#### 頁面欄位細節
|
||
|
||
| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|
||
|---------|---------|------|--------|----------|----------|
|
||
| 當前用戶等級 | String | 是 | "免費用戶" | 用戶等級 | 頁面頂部 |
|
||
| 體驗資格狀態 | Boolean | 是 | false | true/false | 是否已使用體驗 |
|
||
| 選中方案 | String | 否 | - | 方案ID | 用戶選擇時 |
|
||
| 計費週期 | String | 是 | "月付" | 月付/年付 | 價格切換 |
|
||
| 自動續訂設定 | Boolean | 是 | true | true/false | 訂閱選項 |
|
||
| 付款方式 | String | 否 | - | 支付類型 | 確認訂閱時 |
|
||
| 優惠代碼 | String | 否 | - | 0-20字符 | 優惠折扣 |
|
||
| 試用剩餘天數 | Number | 否 | - | 0-7天 | 試用期間顯示 |
|
||
|
||
### Page_Account_Security_W - 帳戶安全設定頁面
|
||
|
||
#### 功能說明 (整合安全機制)
|
||
- **頁面目的**: 管理帳戶安全設定和隱私控制
|
||
- **安全功能**: 密碼變更、雙因素認證、登入記錄
|
||
- **隱私控制**: 資料匯出、帳戶刪除、隱私設定
|
||
|
||
#### 安全設定選項
|
||
- **密碼管理**: 密碼變更、強度檢查、歷史防重複
|
||
- **雙因素認證**: TOTP應用程式、SMS驗證
|
||
- **登入記錄**: 登入歷史、異常活動監控
|
||
- **設備管理**: 已登入設備列表、遠程登出
|
||
- **隱私控制**: 資料下載、帳戶刪除申請
|
||
|
||
#### 頁面欄位細節
|
||
|
||
| 欄位名稱 | 資料類型 | 必填 | 預設值 | 驗證規則 | 顯示條件 |
|
||
|---------|---------|------|--------|----------|----------|
|
||
| 當前密碼 | String | 否 | - | 當前密碼 | 密碼變更時 |
|
||
| 新密碼 | String | 否 | - | 密碼規則 | 密碼變更時 |
|
||
| 雙因素認證狀態 | Boolean | 是 | false | true/false | 安全設定 |
|
||
| 登入通知 | Boolean | 是 | true | true/false | 通知設定 |
|
||
| 異常活動警報 | Boolean | 是 | true | true/false | 安全警報 |
|
||
| 已登入設備列表 | Array | 是 | [] | 設備陣列 | 設備管理 |
|
||
| 最後密碼變更 | Date | 是 | - | 日期時間 | 安全指標 |
|
||
| 資料匯出請求 | Object | 否 | null | 請求物件 | 隱私管理 |
|
||
|
||
## 🌐 Web端技術特點 (整合安全規範)
|
||
|
||
### 響應式設計
|
||
- **桌面優先**: 1200px以上寬度的完整認證流程
|
||
- **表單優化**: 大螢幕友善的表單設計
|
||
- **多步驟引導**: 清晰的註冊和設定流程
|
||
- **無障礙設計**: 完整的鍵盤導航和螢幕閱讀器支援
|
||
|
||
### 安全技術整合
|
||
基於共用業務規則的安全實現:
|
||
- **JWT Token**: 安全的會話管理機制
|
||
- **OAuth 2.0**: 第三方登入整合
|
||
- **bcrypt加密**: 密碼安全儲存
|
||
- **HTTPS強制**: 所有認證流程加密傳輸
|
||
- **CSRF防護**: 跨站請求偽造防護
|
||
- **XSS防護**: 跨站腳本攻擊防護
|
||
|
||
### Web專用功能
|
||
- **瀏覽器整合**: 密碼管理器、自動填入
|
||
- **桌面通知**: Web Notifications API整合
|
||
- **離線檢測**: Network API狀態監控
|
||
- **會話儲存**: SessionStorage安全管理
|
||
- **Cookie管理**: 安全的Cookie設定
|
||
|
||
## ⌨️ Web版快捷鍵一覽
|
||
|
||
### 認證操作快捷鍵
|
||
- `Tab` - 在表單欄位間切換
|
||
- `Enter` - 確認登入/註冊
|
||
- `Esc` - 取消當前操作
|
||
- `Ctrl+H` - 顯示/隱藏密碼
|
||
- `Ctrl+G` - Google登入
|
||
- `Ctrl+A` - Apple ID登入
|
||
|
||
### 安全設定快捷鍵
|
||
- `Ctrl+P` - 開啟密碼變更
|
||
- `Ctrl+S` - 儲存設定變更
|
||
- `Ctrl+D` - 下載個人資料
|
||
- `F5` - 重新整理登入記錄
|
||
- `Delete` - 刪除選中的設備會話
|
||
|
||
### 頁面導航快捷鍵
|
||
- `Alt+L` - 跳轉登入頁面
|
||
- `Alt+R` - 跳轉註冊頁面
|
||
- `Alt+F` - 忘記密碼
|
||
- `Alt+S` - 安全設定
|
||
- `Alt+P` - 用戶資料設定
|
||
|
||
## 📊 Web版業務邏輯差異
|
||
|
||
### 認證管理增強
|
||
基於共用業務規則的Web端實現:
|
||
- **多設備同步**: 跨設備的登入狀態同步
|
||
- **會話延長**: 付費用戶的會話有效期延長
|
||
- **企業整合**: SSO單點登入支援
|
||
- **進階安全**: 雙因素認證選項
|
||
|
||
### 訂閱管理優化
|
||
- **自動續訂**: 智能的續訂提醒和管理
|
||
- **升級降級**: 彈性的方案變更機制
|
||
- **發票管理**: 企業用戶的發票開立
|
||
- **退款處理**: 簡化的退款申請流程
|
||
|
||
### 用戶等級整合
|
||
基於 [共同業務規則 - 用戶角色分級](../common/business-rules.md#👥-用戶角色分級系統):
|
||
- **等級特權**: 不同等級的功能權限差異
|
||
- **升級機制**: 基於購買行為的自動升級
|
||
- **VIP服務**: 高價值用戶的專屬服務
|
||
- **權限控制**: 細粒度的功能權限管理
|
||
|
||
## 🧪 Web版測試要點
|
||
|
||
### 認證流程測試
|
||
- [ ] Email註冊和登入流程完整
|
||
- [ ] 第三方OAuth登入正常
|
||
- [ ] 密碼重設流程無誤
|
||
- [ ] 會話管理機制有效
|
||
|
||
### 安全機制測試
|
||
- [ ] 失敗次數限制機制
|
||
- [ ] 異地登入檢測準確
|
||
- [ ] 雙因素認證功能正常
|
||
- [ ] 密碼安全規則執行
|
||
|
||
### 訂閱系統測試
|
||
- [ ] 免費體驗啟動正常
|
||
- [ ] 訂閱方案切換無誤
|
||
- [ ] 自動續訂機制有效
|
||
- [ ] 取消訂閱流程完整
|
||
|
||
### 響應式測試
|
||
- [ ] 1920x1080 認證表單最佳化
|
||
- [ ] 1366x768 訂閱頁面適配
|
||
- [ ] 快捷鍵功能完整
|
||
- [ ] 無障礙設計符合標準
|
||
|
||
## 📝 Web端開發注意事項
|
||
|
||
### 前端開發
|
||
- 整合OAuth 2.0第三方登入SDK
|
||
- 實現安全的JWT Token管理
|
||
- 設計友善的多步驟表單流程
|
||
- 確保認證頁面的載入速度和安全性
|
||
|
||
### 業務邏輯整合
|
||
- 嚴格遵循 [共同業務規則](../common/business-rules.md) 的認證和訂閱系統
|
||
- 整合用戶等級系統和權限控制
|
||
- 實現與學習系統的無縫整合
|
||
- 確保跨平台的用戶資料同步
|
||
|
||
### 安全性要求
|
||
- 實現完整的OWASP安全標準
|
||
- 用戶敏感資料的加密保護
|
||
- 實時安全威脅檢測和防護
|
||
- 認證記錄的安全存儲和稽核
|
||
|
||
### 用戶體驗設計
|
||
- 簡潔直觀的認證流程設計
|
||
- 清楚的錯誤提示和解決方案
|
||
- 個人化的訂閱推薦和優惠
|
||
- 完善的幫助文檔和客服支援
|
||
|
||
---
|
||
|
||
**文檔狀態**: 🟢 已完成 (基於共用規範更新)
|
||
**最後更新**: 2025-09-11
|
||
**版本**: v2.0 - 整合完整用戶認證與訂閱系統
|
||
**相關文檔**:
|
||
- `../common/business-rules.md` - 共同業務規則
|
||
- `../common/user-flow-diagrams.md` - 用戶流程圖
|
||
- `../mobile/user-authentication-mobile.md` - 對應的Mobile版規格 |