本文根據
laravel/passkeys-server 與 laravel/passkeys 的 README 進行初步調查。兩個套件仍處於未打 tag 的開發階段(2026 年 4 月時點)。這是什麼套件
Laravel 官方儲存庫公開了兩個實作無密碼認證(WebAuthn / Passkey)的套件。- 伺服器端(PHP):
laravel/passkeys-server - 用戶端(JavaScript):
@laravel/passkeys
伺服器端:laravel/passkeys-server
安裝與初始設定
1
加入 PHP 套件
2
發佈並執行 migration
3
於 User Model 加上 trait 與 contract
自動註冊的路由
config/passkeys.php 主要選項
relying_party_idallowed_originsuser_handle_secrettimeoutguardmiddlewarethrottleredirect
事件
套件會發出以下事件。PasskeyRegisteredPasskeyVerifiedPasskeyDeleted
客製化點
CustomActions(替換 WebAuthn 處理)
CustomActions(替換 WebAuthn 處理)
可繼承
GenerateRegistrationOptions / GenerateVerificationOptions / StorePasskey / VerifyPasskey / DeletePasskey,並綁定到 Service Container 以替換行為。CustomResponses(替換回應)
CustomResponses(替換回應)
可自實作
PasskeyLoginResponse 等 contract,把成功時的回應(JSON、重新導向等)調整為符合應用需求。用戶端:@laravel/passkeys
@laravel/passkeys 是處理瀏覽器 WebAuthn ceremony 的 JavaScript 用戶端。
安裝
基本 API
框架 helper
- React:
@laravel/passkeys/react的usePasskeyVerify、usePasskeyRegister - Vue:
@laravel/passkeys/vue的usePasskeyVerify、usePasskeyRegister - Svelte:
@laravel/passkeys/svelte的usePasskeyVerify、usePasskeyRegister
Passkey 自動填入
指定autofill: true 可在具有 autocomplete="... webauthn" 的 input 上顯示瀏覽器的 Passkey picker。不支援的環境或使用者取消時,會退回一般流程。
型別化錯誤
README 中公開的錯誤類別如下。NotSupportedErrorUserCancelledErrorPasskeyExistsErrorPasskeyError(base class)
SSR 對應
WebAuthn 屬於瀏覽器 API,但各框架 hook 皆 SSR 安全。伺服器端isSupported 會被視為 false,掛載後才更新為真正的瀏覽器狀態。
總結
- 組合
laravel/passkeys-server(PHP)與@laravel/passkeys(JS),可在 Laravel 建構完整的 Passkey 認證堆疊。 - 兩者仍處於未打 tag 的開發階段,但作為 Laravel 官方生態系,未來很可能成為標準認證方式。
- 若要提早導入,安全的做法是以 README 中的路由、設定、錯誤處理、客製化擴充點為前提來設計。
之後 Passkey 正式作為 Laravel Fortify 的功能加入。透過 Fortify 啟用 Passkey 時,應使用
Features::passkeys(),而不是直接安裝 laravel/passkeys-server。詳情請參考 Laravel Fortify 與啟動套件。laravel/passkeys-server
確認伺服器端套件的最新 README 與實作。
@laravel/passkeys
確認用戶端套件的最新 README 與 API。
Laravel Fortify 與啟動套件
解說透過 Fortify 啟用 Passkey 的步驟與其與啟動套件的關係。