整合 Passport.js 與 Logto
一個實用指南和範例,教你如何將 Passport.js 整合至 Logto。
一個實用指南和範例,教你如何將 Passport.js 整合至 Logto。
Passport.js 是一個用於 Node.js 的身份驗證中介軟件,可以無縫嵌入任何基於 Express 的網絡應用。這份全面指南將側重於使用 passport-openidconnect 插件,提供一個簡單而有效的方法來將 Logto 與 Passport.js 結合。在本教程中,我們會使用 Express.js 來構建我們的應用。所有我們將討論的代碼都可在公共 GitHub 儲存庫中找到。
在深入整合過程之前,我們需要在安裝 Express.js 及其 session 中介軟件後設置基本項目。
假設你已經準備好一個 TypeScript 項目環境(如果沒有,請參考 官方 TypeScript 文件),開始安裝必要的包:
創建 src/app.ts,包含以下代碼:
這段腳本初始化了 Express 應用並配置 cookieParser 和 session 中介軟件以進行基於 Cookie 的會話管理,這對於在 Passport.js 中存儲身份驗證結果至關重要。接著使用 http 模塊啟動服務。
要繼續,需要一個 Logto 應用。通過訪問 Logto 控制台,導航至「應用程式」,然後點擊「創建應用程式」來創建一個。選擇「Express」,為你的應用命名,然後點擊「創建應用程式」。

完成或閱讀完創建指南後,你將找到一個詳情頁面,其中包含下一步的配置資訊。

在應用詳情頁面,配置兩個數值:
http://localhost:3000/callback 以配合項目的回調路由。http://localhost:3000,讓用戶在登出後導向首頁。你可以稍後更改這些數值。
安裝 passport 和 OIDC 策略插件 passport-openidconnect:
創建 app/config.ts 以進行配置管理:
相應地設置環境變量:
| Environment Variable | Description | Example |
|---|---|---|
APP_ID | Logto 的 App ID | 4ukboxxxxxxxxx |
APP_SECRET | Logto 的 App Secret | 5aqccxxxxxxx |
ENDPOINT | Logto 的端點 | https://g5xxx.logto.app/ |
創建 src/passport.ts
這段代碼使用 OpenIDConnectStrategy 初始化 Passport。serialize 和 deserialize 方法設定用於演示目的。
確保在你的應用中初始化並附加 Passport 中介軟件:
我們現在將創建特定路由以處理身份驗證流程:
/sign-in此路由構建並重定向到 OIDC 身份驗證路由。
/callback這處理 OIDC 登錄回調,存儲令牌,並重定向到首頁。
/sign-out這會重定向至 Logto 的會話終止 URL,然後返回首頁。
使用身份驗證狀態開發首頁:
在這裡,使用 JSON.stringify 顯示用戶信息,並使用 request.user 的存在來保護路由。
恭喜你成功整合 Passport.js 與 Logto。希望這份指南可以幫助你從現有系統遷移到使用 Logto。為獲得更佳的身份驗證體驗,考慮今天嘗試使用 Logto Cloud。祝開發愉快!