30天開除老闆計劃(#08):用 AI 快速打造會員登入與 JWT 認證系統

更新 發佈閱讀 7 分鐘

說了這麼多天,終於要開始實作內容了。那第一個動工的我覺得應該是要會員系統,因為幾乎所有功能都要依賴使用者身份:沒有登入,就不能記錄飲食、運動,也看不到自己的成長紀錄。所以不管怎樣,帳號系統一定是最先要做的。要有記名,才可以讓不同人使用,也方便我讓大家一起測試。

開發一個健康紀錄 APP,最小的 MVP 功能就是:

  • 使用者能登入 / 註冊
  • 有一個帳號可以綁定自己的資料(體重、身高、飲食紀錄、運動紀錄)

沒有登入,其他功能都沒辦法跑,所以這邊一定要先把「認證流程」跑通,之後做任何功能才有基礎。

要怎麼做?

其實我的做法很簡單,就是一步一步把概念告訴 AI,然後再看 AI 回傳的結果去修改。不管是畫面還是實作方式,都可以慢慢調整。我不太會特別去琢磨「要怎麼跟 AI 說」,因為我本來就比較隨性。

網路上很多人把這件事講得很玄,說你一定要有一套很完整的邏輯才能下正確的指令,甚至包裝成一門學問來賣課程。但老實說,我覺得 Vibe coding 的精隨就是隨興 —— 用白話文和 AI 溝通就好。就算過程中可能要多繞幾圈、多花一些 token,也沒什麼大不了的。

當然,基本的概念和做法還是要懂,不然就算 AI 生出程式碼你也不知道怎麼用。不過隨著 AI 更新得越來越快,它對意圖的理解能力也會越來越好。既然如此,為什麼要花時間去鑽研「怎麼說話」這種技巧呢?專注在產品、功能本身才是重點。

登入系統

前面說了太多廢話了,有點離題。

登入系統,不就是用帳號密碼登入就好了?是!也不是!

  • 帳號驗證
    • 使用者輸入帳號(通常是 email)和密碼。
    • 系統要去資料庫裡確認「有沒有這個帳號」。
    • 如果帳號不存在,直接回傳錯誤訊息。
  • 密碼驗證
    • 密碼絕對不能明碼存。
    • 通常會先用 bcrypt(或其他演算法)把密碼 hash 過,再存進資料庫。
    • 登入時就用「輸入的密碼」和「資料庫的 hash」做比對,確認是否正確。
  • 身份憑證(Token)
    • 驗證成功後,系統要給使用者一張「通行證」。
    • 最常見就是 JWT(JSON Web Token)。
    • 這個 token 裡會包含使用者 ID 等資訊,之後使用者再帶著它去呼叫 API,就不需要每次都輸入帳密。
  • Token 保存方式
    • 前端要把這張「通行證」存起來。
    • 可以放在 localStorage(簡單但有安全風險)、或是 httpOnly cookie(安全一點,但開發麻煩)。
    • 我的做法:先用 localStorage,把流程跑通,再來考慮安全性。
  • 授權(Authorization)
    • 有了登入還不夠,還需要「權限管理」。
    • 例如:一般使用者能記錄飲食,但不能進後台管理;管理員才可以。
    • 這就是登入之後的「授權」問題。

API router

我們今天先做必要的API就好,功能很簡單。就是註冊,然後登入,再來是看到你是誰就好了。

  • POST ****/auth/register → 註冊新帳號(email 唯一、密碼要 hash,打一下使用者名字)
  • POST ****/auth/login → 帳號密碼登入,成功後傳 JWT token
  • GET ****/auth/me → 透過 JWT 取得使用者資料。

結果

其實 JWT 認證系統算是一個很成熟的東西,所以其實AI很了解。你其實只需要和AI說,幫我做一個

JWT登入系統,先幫我開 註冊和登入再來去取得使用者資料頁面。

這樣就可以完成了!疑?你不相信?真的就這麼簡單啊!留給你去開個AI coding 工具玩玩看。不過後端記得要設置好,如果真的不太知道也可以請AI幫你。有好奇遇到問題的讀者也可以留言給我。我可以在講詳細一些。

後端api

使用nest.js 最大的優點就是因為他架構比較嚴謹,你可看到AI依照 nest.js的架構幫我們把程式碼生成好。而且還按照資料庫目錄。

raw-image


我這邊簡單說明一下這個架構就好了。

Auth 是一個模組(Module),主要負責登入功能

  • DTO (Data Transfer Object)
    用來定義 API 接收的資料格式(並加上驗證)。例如 login.dto.tsregister.dto.ts。也就是這個 api post的話要傳什麼資料進來。
  • Schema (Mongoose / Prisma / TypeORM)
    定義資料庫結構,在你這個專案裡,MongoDB 的 schema 就放在 schemas/user.schema.ts
  • Strategy
    專門處理驗證策略,例如:local.strategy.ts 負責帳號密碼登入;jwt.strategy.ts 負責驗證 JWT。
  • Controller
    負責接收 HTTP 請求(例如 /auth/login/auth/register)定義http的方法,Controller 不直接做商業邏輯,而是把事情交給 Service。
  • Service
    負責商業邏輯,例如:驗證密碼、簽發 JWT、查詢資料庫,計算之類的。Controller → 呼叫 Service → 回傳結果。
  • Module
    把 Controller、Service、Schema、Strategy 等組織起來,形成一個獨立的Auth模組。在 app.module.ts 引入,讓整個APP都可以使用。

前端

前端我就和 AI 說

我要使用 next.js。然後使用 Tailwind CSS 實作頁面

就產出下面的畫面。

raw-image


raw-image


raw-image


結語

其實我們完全可以用白話文、隨意地和 AI 對談,請他幫忙做出想要的頁面。不過現實是,大部分情況下 AI 不會一次就完美達到需求,所以我們得不斷測試、修改,確認可以正常運作後,再繼續請他加功能或調整,這樣循環迭代下去。

這樣的方式確實能夠很快產出原型,但同時也需要花時間在測試與修正上。換句話說,它幫我們省了「從零開始寫程式」的力氣,但依然需要我們投入耐心,陪著 AI 一起把東西磨到理想的樣子。


如果你也有想做什麼東西,事不宜遲,現在就開吧!!!!

留言
avatar-img
留言分享你的想法!
avatar-img
湯編驛-湯姆實驗室
16會員
52內容數
我是一個從科技業轉職的軟體工程師
2025/09/22
系統專案架構 開始進入開發系統之前,我們要來先想一下專案架構要怎麼做。 前後端分離 現在比較流行的架構是前後端分離。比較常見的方案是前後端個一個專案各自一個檔案。但這樣子分離的話對於 vibing code 比較難,畢竟你兩個專案都開著你要同時個別和他們說要做什麼,有點不太切實際又麻煩。 所
Thumbnail
2025/09/22
系統專案架構 開始進入開發系統之前,我們要來先想一下專案架構要怎麼做。 前後端分離 現在比較流行的架構是前後端分離。比較常見的方案是前後端個一個專案各自一個檔案。但這樣子分離的話對於 vibing code 比較難,畢竟你兩個專案都開著你要同時個別和他們說要做什麼,有點不太切實際又麻煩。 所
Thumbnail
2025/09/20
本文分享以AI加速開發健身健康紀錄APP的經驗,從核心功能MVP(最小可行產品)的設計,包含飲食記錄(AI辨識熱量)、運動記錄、數據分析,到未來擴展社群功能、挑戰任務及商城合作的完整規劃,目標打造更有效率、更具互動性的健身追蹤平臺。
Thumbnail
2025/09/20
本文分享以AI加速開發健身健康紀錄APP的經驗,從核心功能MVP(最小可行產品)的設計,包含飲食記錄(AI辨識熱量)、運動記錄、數據分析,到未來擴展社群功能、挑戰任務及商城合作的完整規劃,目標打造更有效率、更具互動性的健身追蹤平臺。
Thumbnail
2025/09/19
一位工程師如何克服內心恐懼,運用AI工具快速開發健身APP,並從自身需求及同事經驗中,找到產品的市場定位與價值。文章分享了多個APP開發構想,以及最終選擇開發健身APP的原因,並突顯產品特色:結合運動紀錄、熱量控制與社群互動等功能,希望能幫助使用者更有效率地達成健身目標。
Thumbnail
2025/09/19
一位工程師如何克服內心恐懼,運用AI工具快速開發健身APP,並從自身需求及同事經驗中,找到產品的市場定位與價值。文章分享了多個APP開發構想,以及最終選擇開發健身APP的原因,並突顯產品特色:結合運動紀錄、熱量控制與社群互動等功能,希望能幫助使用者更有效率地達成健身目標。
Thumbnail
看更多
你可能也想看
Thumbnail
每次搬家或大整理,是不是都覺得自己是在參加一場體力與耐心的極限挑戰賽? 雜物永遠比想像中多、動線永遠不順、家裡還有兩位主子(貓咪)在旁邊搗亂,真的會不知道從哪裡開始整理!😩 別擔心!身為一個經常整理空間、又有貓咪的資深戰鬥員(貓奴),我發現只要選對工具和好物,真的能讓整個過程輕鬆超級多!今天就
Thumbnail
每次搬家或大整理,是不是都覺得自己是在參加一場體力與耐心的極限挑戰賽? 雜物永遠比想像中多、動線永遠不順、家裡還有兩位主子(貓咪)在旁邊搗亂,真的會不知道從哪裡開始整理!😩 別擔心!身為一個經常整理空間、又有貓咪的資深戰鬥員(貓奴),我發現只要選對工具和好物,真的能讓整個過程輕鬆超級多!今天就
Thumbnail
大家小時候打仙俠尢賴或追仙俠劇時,有沒有幻想過自己能「御劍飛行」? 我居然還真的在蝦皮找到了把御劍飛行器啊!!!!!
Thumbnail
大家小時候打仙俠尢賴或追仙俠劇時,有沒有幻想過自己能「御劍飛行」? 我居然還真的在蝦皮找到了把御劍飛行器啊!!!!!
Thumbnail
這篇涵蓋了 Notion 建立網站的基礎,還有免費的教學資源,讓你不用寫程式,就能用 Notion 快速建立個人網站! Notion 簡易入口網站適合學生、求職、接案、小店家使用,能快速產出一個網站,節省成本又快速方便。
Thumbnail
這篇涵蓋了 Notion 建立網站的基礎,還有免費的教學資源,讓你不用寫程式,就能用 Notion 快速建立個人網站! Notion 簡易入口網站適合學生、求職、接案、小店家使用,能快速產出一個網站,節省成本又快速方便。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本次我們優化了訪客加入沙龍的流程,當訪客進入到你的沙龍時,將會優先導引至沙龍的關於頁,因此,關於頁將成為訪客對沙龍的第一印象,露出的資訊十分重要,建議創作者們一定要準備這些資訊,讓初來乍到的訪客認識你的沙龍
Thumbnail
本次我們優化了訪客加入沙龍的流程,當訪客進入到你的沙龍時,將會優先導引至沙龍的關於頁,因此,關於頁將成為訪客對沙龍的第一印象,露出的資訊十分重要,建議創作者們一定要準備這些資訊,讓初來乍到的訪客認識你的沙龍
Thumbnail
這篇文章分享如何透過免費電子郵件課程提供價值,建立信任,並引導訂閱者購買付費產品。透過豐富內容、獨特風格,以及AI的幫助,讓你的需求看起來更具吸引力。
Thumbnail
這篇文章分享如何透過免費電子郵件課程提供價值,建立信任,並引導訂閱者購買付費產品。透過豐富內容、獨特風格,以及AI的幫助,讓你的需求看起來更具吸引力。
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
本文章介紹了建立網頁的整個流程,包括設置 Templates, Views, Urls 等步驟。透過這些步驟,大家便能創建一個新的網頁,並成功測試。
Thumbnail
本文章介紹了建立網頁的整個流程,包括設置 Templates, Views, Urls 等步驟。透過這些步驟,大家便能創建一個新的網頁,並成功測試。
Thumbnail
gWordPress使用者 如何利用開源和AI 使自媒體變成付費制訂閱制會員制的網站 幸福課程 幸福教練黃老師 潮資訊媒體 社群編輯 以下是一些 WordPress 用戶 如何利用開源和 AI 使自媒體變成付費訂閱制會員制網站的方法: 使用開源軟體 WordP
Thumbnail
gWordPress使用者 如何利用開源和AI 使自媒體變成付費制訂閱制會員制的網站 幸福課程 幸福教練黃老師 潮資訊媒體 社群編輯 以下是一些 WordPress 用戶 如何利用開源和 AI 使自媒體變成付費訂閱制會員制網站的方法: 使用開源軟體 WordP
Thumbnail
本文探討會員系統網頁設計的技巧和策略,包括註冊和登錄流程設計、個人化的會員資料頁面、會員等級和權益設計、會員專區和互動功能、客戶支持和反饋機制等。
Thumbnail
本文探討會員系統網頁設計的技巧和策略,包括註冊和登錄流程設計、個人化的會員資料頁面、會員等級和權益設計、會員專區和互動功能、客戶支持和反饋機制等。
Thumbnail
啟動從未如此簡單、輕鬆或快速! 記得我開始寫第一份電子報時,花了很長時間。 但現在不再是這樣了。 除了Logo之外,所有內容幾乎都可以在 Chat GPT 的幫助下創建完成。
Thumbnail
啟動從未如此簡單、輕鬆或快速! 記得我開始寫第一份電子報時,花了很長時間。 但現在不再是這樣了。 除了Logo之外,所有內容幾乎都可以在 Chat GPT 的幫助下創建完成。
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News