魔術連結身份驗證
學習如何使用一次性代碼實現無密碼登入、僅邀請註冊和組織成員邀請。
學習如何使用一次性代碼實現無密碼登入、僅邀請註冊和組織成員邀請。
魔術連結是一種無密碼的身份驗證方法,使用者透過電子郵件(或簡訊)接收到一次性登入的 URL。點擊該連結後,可以無需密碼登入。
以下是魔術連結的一些重要安全功能:
一個魔術連結包含:
例如,一個魔術連結可能如下所示:
要創建一個魔術連結,你需要生成一次性代碼,安全地將其發送給用戶,然後在用戶點擊連結時進行驗證。
使用 Logto 管理 API創建一次性代碼。
請求範例:
獲取一次性代碼後,可以組合魔術連結並發送到終端使用者的電子郵件地址。魔術連結至少應包含代碼和用戶電子郵件作為參數,並導航到您應用中的登陸頁面。例如 https://yourapp.com/landing-page。
以下是一個簡單的魔術連結範例:
注意:
魔術連結中的參數名稱可以完全自定義。根據應用程序需求,您可以添加額外信息,也可以對所有 URL 參數進行編碼。
當終端用戶點擊魔術連結並導航到您的應用程序時,您可以從 URL 中提取 token 和 email 參數,然後調用 Logto SDK 的 signIn() 函數以觸發身份驗證流程。
詳細資訊請查閱 Logto Docs - Magic Link (One-time Token)。
魔術連結可以替代使用者身份驗證的第一步,但無法避開 多重身份驗證 (MFA)。
在 Logto 中,當生成具有一次性代碼的魔術連結時,不需指定是用於登入還是註冊。我們會根據電子郵件的註冊狀態,自動確定流程:
Logto 支持以下場景的魔術連結:
目前不支持:
如果需要進一步的自訂,請告訴我們。
對於內部測試的新產品(例如 AI 工具)或內部工具,你可以禁用公開註冊並只允許特定用戶訪問應用。要使用 Logto 實現:
前往 Console > Sign-in experience > Sign-in and Sign-up > 高級選項,並關閉“啟用用戶註冊”以關閉公開註冊。

收集要邀請用戶的電子郵件地址(例如,通過您的網站或現有用戶推薦)。
按照上面所述創建並發送魔術邀請連結(請求一次性代碼,組合魔術連結,透過 Logto SDK 觸發身份驗證)。
注意:設置邀請連結的過期時間。建議將連結設置為至少一天有效。使用以下請求內容來生成一次性代碼:
將魔術連結發送到用戶的電子郵件中(例如,https://yourapp.com/landing-page?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected])。自訂電子郵件模板,例如:

當用戶點擊“接受邀請”時,即使已禁用公開註冊,他們仍會自動註冊您的服務。這被稱為“目標用戶邀請”。
對於多租戶產品(例如像 Slack、GitHub、Vercel 的 SaaS 應用),提供無縫的成員邀請過程來管理組織成員資格。使用魔術連結可提高成員邀請的轉換率。
按照 Logto Docs 實現組織創建、基於組織角色的訪問控制和組織管理:Logto Organizations。
在產品中設置 “邀請成員” 流程。示例:

按照此指南 邀請組織成員。 注意:在邀請成員時,請確保請求內容包含:
context: jitOrganizationIds 指定用戶將加入的組織。expiresIn 時間(例如 2 天或 1 週)以便用戶有足夠時間接受邀請。請求範例:
將邀請連結發送到用戶的電子郵件(例如,https://yourapp.com/landing-page?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected])。自訂您的電子郵件模板,例如:

當用戶點擊 “接受邀請” 時,將會自動登入或註冊並自動加入組織。
如果用戶已登入並點擊另一個魔術連結會發生什麼?
為正確處理帳戶衝突,請確保以下事項:
login:不要設置包含 login 的登入提示。如果設置錯誤,Logto 將自動登入與魔術連結代碼相關的帳戶,繞過帳戶切換提示。signIn() 函數時,指定 clearTokens: false 參數以防止清除現有代碼。如果此選項已使用,確保在登入回調頁手動 清除代碼。經過正確配置後,用戶體驗如下:

當用戶點擊無效的魔術連結時,將被重定向到一個錯誤頁面,清晰地解釋問題所在。以下是可能的錯誤場景及其信息:
| 名稱 | 描述 |
|---|---|
| token_not_found | 沒有找到符合給定電子郵件和代碼的有效代碼。 |
| email_mismatch | 電子郵件與給定代碼不匹配。 |
| token_expired | 代碼已過期。 |
| token_consumed | 代碼已被使用。 |
| token_revoked | 代碼已被撤銷。 |
| cannot_reactivate_token | 無法重新啟用代碼。 |
每個錯誤頁面將提供一個具體的消息,幫助用戶理解無效魔術連結的原因並指導他們下一步該怎麼做。例如:

Logto 透過靈活的無密碼登入流程,使用魔術連結提供企業級的安全保障。這是一種簡單而強大的方式,可以創造流暢的用戶體驗——無論你是在邀請用戶加入組織,讓他們輕鬆創建帳號,還是提供無憂的身份驗證。由於 Logto 能處理諸如帳戶衝突和代碼過期這樣的棘手問題,讓你的用戶每次都有一個安全且無挫折的過程。
準備好用堅如磐石的身份驗證現代化你的 IAM 嗎?