iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
AI & Data

ML/DL實作-「營養抗老」專題製作系列 第 28

Day 28_安全性與權限控管

  • 分享至 

  • xImage
  •  

🎯 目標

為 API 與 Dashboard 加入 身份驗證與授權

強化 資料保護(使用者資料、偏好、藥物清單等個資)

加入 角色/權限管理(一般使用者 vs 管理員)

增加 token 過期機制,避免長期未登出造成風險

🏗️ 技術設計
1. 使用 Spring Security

引入 spring-boot-starter-security

最小化設定:

/api/users/register, /api/users/login → 允許匿名訪問

/api/** → 需要 JWT 或 session

/api/admin/** → 限制角色為 ADMIN

2. JWT 驗證流程

登入成功後簽發 JWT(含 user_id, role, 過期時間 exp)

每次 API 請求帶 Authorization: Bearer <token>

後端 Filter 驗證 JWT → 決定是否允許存取

3. 資料保護

使用者密碼:BCryptPasswordEncoder 雜湊儲存

Drug 清單、偏好食物等屬於個資 → 資料庫可加密欄位(最小化先 hash/salt)

前端:避免敏感資訊直接顯示

4. 權限管理

ROLE_USER:

可查詢效果、推薦、解釋、個人化 API

ROLE_ADMIN:

除上述外,可存取 /api/admin/reload-models、資料匯入 API

可檢查 DB 狀態

5. Token 管理

JWT 過期時間:例如 2 小時

Refresh Token 機制(可選,Day26 先不做,後續再擴充)

未授權存取時 → 回傳 401 Unauthorized

🧪 測試計畫

匿名存取 /api/recommendations → 回傳 401 Unauthorized

登入取得 token → 請求 /api/recommendations 成功

用一般帳號請求 /api/admin/reload-models → 回傳 403 Forbidden

Admin 帳號可成功 reload

Token 過期 → 再次請求 → 自動拒絕

✅ 驗收標準

系統能正確區分 未登入 / 一般使用者 / 管理員

API 與 Dashboard 受保護,避免匿名濫用

使用者資料(特別是藥物清單)不會明碼存放

Token 過期後需重新登入

上一篇
Day 27_前端可視化 Dashboard
下一篇
Day 28_監控與日誌整合 (Monitoring & Logging)
系列文
ML/DL實作-「營養抗老」專題製作30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言