4-2、困難及解決方式
食譜網站開發問題與解決總整理
使用者驗證與授權
JWT 權限判斷錯誤
使用者是否為作者、是否登入的判斷邏輯不清楚
使用 JwtAuthFilter
,透過 GetPayload()
解析 JWT;自訂 IsSelf()
方法比對是否為本人
無法正確登入 Google 帳號
不知道 Google OAuth 的授權流程與 Token 交換步驟
參考 Google OAuth 官方文件,建立 callback API,與前端討論流程,交換 access token 並取回使用者資訊,成功後產生 JWT
影片上傳與平台選擇
影片上傳成功但無法即時播放
Vimeo 上傳後需等待轉檔處理完成
使用 Vimeo API 的 transcode.status
欄位檢查轉檔狀態,轉碼完成前不顯示播放器
草稿頁預覽影片出現錯誤
無法即時同步影片狀態
分兩步操作:影片上傳成功 → 儲存草稿 → 透過 Vimeo 狀態 API 控制是否允許預覽
不確定該用哪個影音平台
缺乏橫向比較與實測
參考 YouTube / Cloudinary / Vimeo 的官方文件進行實測,成功上傳影片後回報給組員,再開會共同分析優缺點後決定使用 Vimeo: ✅ 無廣告,✅ 播放控制強,✅ API 文件完整,❌ 缺點是轉碼稍慢
API 設計與資料存取
作者無法檢視未發布食譜
API 僅撈取已發布資料,導致草稿無法瀏覽
加入判斷是否為作者,若是則允許顯示草稿
評分與留言主鍵重複錯誤
(UserId, RecipeId)
作為主鍵導致同用戶無法重複留言或評分
實作更新 vs 新增邏輯判斷,若有資料則更新,否則插入
多筆留言、評分導入時錯誤
在SSMS,未設 IDENTITY_INSERT
或關聯錯誤
插入時開啟 SET IDENTITY_INSERT
,排除自己留言給自己的資料
廣告模組與點擊紀錄
點擊與曝光紀錄不一致
無法辨識匿名用戶、重複點擊問題
建立 AdViewLogs
,透過 Session/Cookie 記錄一次 Session 的行為,登入後補寫 UserId
前端無法計算互動率
公式錯誤或數據不足
回傳互動率 (click / view) * 100
,避免除以零錯誤時回傳 0
無法更新後台報表數據
無自動統計功能
建立後台月報查詢 API,根據時間區間統計各廣告曝光與點擊數據
圖片與表單資料上傳
無法正確接收表單與圖片
MultipartFormData
處理失敗
使用 ReadAsMultipartAsync()
拆解內容,並實作 GetFormValue()
抽取欄位資料
圖片上傳覆蓋問題
同名檔案覆蓋導致圖片遺失
使用 Guid.NewGuid().ToString("N")
產生唯一亂數檔名,避免衝突
假資料與初始化
批次插入時主鍵錯誤
ID 欄位設定錯誤或重複
使用 SET IDENTITY_INSERT
插入資料;避免重複主鍵與違反外鍵限制
留言/評分/收藏有違規資料
作者對自己留言、評分、收藏
寫入前排除 UserId == Recipe.UserId
的組合,並隨機分配資料
評分超過上限
沒有限制 5.0 上限
亂數範圍控制在 0~5,避免浮點溢出錯誤
前後端協作與團隊溝通
討論內容常常遺失
口頭討論後無紀錄,導致混亂
使用 Notion 建立討論紀錄與任務追蹤頁面,明確記下每次會議的決策
wireframe 頻繁更動
畫面流程反覆修改但沒有共識
將設計版本歷程記錄下來,與前端反覆確認可行性與 UI 邏輯性
Git 版本控制問題(個人開發)
推送被拒 (rejected (fetch first)
)
本地版本落後遠端導致推不上去
使用 git pull origin main --rebase
搶救衝突再推送,或 git stash
暫存修改後再同步
推送被 GitHub 阻擋(包含私密資訊)
Google OAuth 和 Vimeo 的公私鑰被誤判為機敏資訊
使用 .gitignore
忽略 bin/
、obj/
及敏感檔案(如 *.key
, *.json
)避免被誤擋與上傳失敗
Last updated