在 Next.js 中實施 WebAuthn:實戰指南
手把手指南,通過實時代碼示例在 Next.js 中實施 WebAuthn。
手把手指南,通過實時代碼示例在 Next.js 中實施 WebAuthn。
歡迎回到我們的 WebAuthn 系列。在之前的文章中,我們已經涵蓋了 WebAuthn 的基礎知識 和 101 指南。如果你剛剛加入我們,不妨查看這些基礎文章來快速了解。
今天,我們要捲起袖子,把理論付諸於實踐。我們將利用 Next.js 的新功能 "Server Actions"。我們的目標是實現在 Next.js 應用中實施 WebAuthn,並準備好使用 WebAuthn。
在我們深入探索代碼海洋之前,先讓我們看看旅程的終點 - 一個功能齊全的演示網站 。訪問它來查看 WebAuthn 的實際應用,並體驗你將要建設的內容。在這個演示網站中,你可以註冊新用戶並使用剛註冊的通行密碼登入。

而對於那些喜歡手持地圖的人,我們也為你準備好了!我們討論的所有代碼都在公眾的 GitHub 資源庫 中 。這個資源庫是你的伴侶指南,提供我們實施方案的完整源代碼。
準備好踏上這段激動人心的冒險了嗎?讓我們開始吧!
在我們開始之前,讓我們確保我們擁有一切所需:
@simplewebauthn/browser、@simplewebauthn/server 和 @simplewebauthn/typescript-types現在,準備好了工具和材料,我們可以開始建設了。
在生產和本地開發中初始化 KV 存儲都很容易,按照這個指南連接 KV 存儲到你的項目並提取環境值:https://vercel.com/docs/storage/vercel-kv/quickstart
我們導出了兩個功能:
getCurrentSession:使用 Next.js cookie 助手為當前請求創建會話並返回值。updateCurrentSession:將數據保存到當前會話。同樣在我們的會話實施中,讓我們實施一個簡單的用戶數據庫。
我們創建了按電子郵件查找用戶和更新用戶數據的功能。記住,這僅用於演示,真實產品中,用戶數據通常保存在數據庫中。
在我們繼續之前,讓我們看看註冊和身份驗證流程圖:
如你所見,我們需要準備兩個功能:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistration與註冊類似,登入需要兩個功能:
generateWebAuthnLoginOptionsverifyWebAuthnLogin以下是代碼:
我們已經完成了準備工作,讓我們建設網頁:
恭喜你,完成了在 Next.js 應用中實施 WebAuthn 的複雜工作。當我們結束時,重要的是要解決一些關鍵的考慮事項,以便在生產環境中部署它。
userId 或 username。感謝你加入我們的教育冒險。即使在這個簡單的例子中,集成 WebAuthn 也不是一個簡單的任務,還有另一個選擇,試試 Logto 的 MFA 的 WebAuthn: