跳至主要內容

為你的 WordPress 網站新增驗證 (Authentication) 使用 Logto 插件

本教程將向你展示如何使用我們的官方 WordPress 插件將 Logto 整合到你的 WordPress 網站中。

先決條件

整合

安裝插件

資訊:

目前,我們的插件仍在審核中,尚未在 WordPress 插件目錄中提供。一旦可用,我們會更新此頁面。

  1. 從以下連結之一下載 Logto WordPress 插件:
    • 最新版本:下載名稱格式為 logto-plugin-<version>.zip 的檔案。
  2. 下載插件 ZIP 檔案。
  3. 在你的 WordPress 管理面板中,前往 Plugins > Add New
  4. 點擊 Upload Plugin
  5. 選擇下載的 ZIP 檔案並點擊 Install Now
  6. 點擊 Activate

配置插件

現在你應該能在 WordPress 管理面板側邊欄看到 Logto 選單。點擊 Logto > Settings 來配置插件。

備註:

在配置插件之前,你應該已在 Logto Console 中創建了一個 傳統網頁 應用程式。如果尚未創建,請參閱 將 Logto 整合到你的應用程式中 以獲取更多資訊。

插件的基本配置如下:

  • Logto endpoint:你的 Logto 租戶的端點。
  • App ID:你的 Logto 應用程式的 App ID。
  • App secret:你的 Logto 應用程式的有效 App secret 之一。

所有值都可以在 Logto Console 的應用程式詳細資訊頁面找到。

填寫完值後,點擊 Save Changes(如果找不到按鈕,請向下滾動到頁面底部)。

配置重定向 URI

重定向 URI 是 Logto 在使用者驗證後將其重定向的 URL;而登出後重定向 URI 是 Logto 在使用者登出後將其重定向的 URL。

以下是一個非規範的序列圖來說明登入流程:

以下是登出流程的非規範序列圖:

要了解為什麼需要重定向,請參閱 登入體驗說明

在我們的情況下,我們需要在 Logto Console 中配置兩個重定向 URI。要找到重定向 URI,請前往 WordPress 管理面板中的 Logto > Settings 頁面。你會看到 Redirect URIPost sign-out redirect URI 欄位。

  1. 複製 Redirect URIPost sign-out redirect URI 值,並將其粘貼到 Logto Console 中的 Redirect URIsPost sign-out redirect URIs 欄位。
  2. 在 Logto Console 中點擊 Save changes

檢查點:測試你的 WordPress 網站

現在你可以在你的 WordPress 網站中測試 Logto 整合:

  1. 如有需要,打開無痕瀏覽器窗口。
  2. 訪問你的 WordPress 網站並點擊 Log in 連結(如果適用);或直接訪問登入頁面(例如,https://example.com/wp-login.php)。
  3. 頁面應重定向到 Logto 登入頁面。
  4. 完成登入或註冊流程。
  5. 驗證成功後,你應該被自動重定向回你的 WordPress 網站並已登入。
  6. 點擊 Log out 連結以登出你的 WordPress 網站。
  7. 你應該被重定向到 Logto 登出頁面,然後返回到你的 WordPress 網站。
  8. 你應該已從你的 WordPress 網站登出。

驗證 (Authentication) 設定

雖然插件開箱即用,但你可以在 Logto 插件設定頁面自訂驗證設定,以更好地滿足你的需求。

權限範圍 (Scopes)

Logto 使用權限範圍 (Scopes) 來控制與你的應用程式共享的信息。Logto WordPress 插件使用 Logto PHP SDK 處理驗證過程,預設包含以下權限範圍:

  • openid:OpenID Connect 所需的基本權限範圍。
  • profile:獲取使用者的基本個人資料信息。
  • offline_access:獲取重新整理權杖 (Refresh token) 以進行離線存取。

有關權限範圍的更多信息,請參閱 Scopes and claims

插件還預設添加了兩個額外的權限範圍:

  • email:獲取使用者的電子郵件地址。
  • roles:獲取使用者在 Logto 中的角色。

這兩個權限範圍用於將 Logto 電子郵件和角色映射到 WordPress 電子郵件和角色。你可以通過編輯插件設定中的 Scopes 欄位來自訂權限範圍。

注意:

如果你移除 emailroles 權限範圍,插件的某些功能將無法正常運作。

額外參數

你可能希望在驗證請求中添加一些額外的參數來自訂驗證過程。例如,你可以添加 first_screen 參數來決定驗證過程中首先顯示的畫面。

有關額外參數的更多信息,請參閱 驗證參數

要求驗證過的電子郵件

預設情況下,插件要求使用者在 Logto 中擁有已驗證的電子郵件地址才能登入你的 WordPress 網站。如果使用者嘗試在沒有驗證過的電子郵件地址的情況下登入,插件將拋出錯誤。

你可以通過取消勾選插件設定中的 Require verified email 選項來禁用此功能。

要求組織 ID

你可以要求使用者在 Logto 中擁有特定的組織成員資格才能登入你的 WordPress 網站。當指定了組織 ID 時,插件將檢查使用者的 ID 權杖 (ID token) 中是否包含指定的組織 ID。如果沒有,將拋出錯誤。

要了解有關組織的更多信息,請參閱 組織

授權 (Authorization) 設定

除了驗證,Logto 還提供授權功能,如 角色型存取控制 (RBAC)。如果你正在開發自己的應用程式,實現 RBAC 需要一些自訂代碼,而 Logto WordPress 插件提供了一種內建方式來將 Logto 角色映射到 WordPress 角色

角色映射

Logto WordPress 插件允許你將 Logto 角色映射到 WordPress 角色。這意味著你可以在 Logto 中為使用者分配不同的角色,插件將在使用者登入時自動為這些使用者分配相應的 WordPress 角色。

要映射角色,請在 Role mapping 部分點擊 Add 以新增角色映射。例如,如果你想將 Logto 中的 group:editors 角色映射到 WordPress 中的 Editor 角色,你可以通過新增角色映射並填入以下值來實現:

  • Logto 角色:group:editors
  • WordPress 角色:editor(WordPress 中 Editor 角色的角色 slug)

你可以在 Roles and Capabilities 文檔中找到所有 WordPress 角色的角色 slug。

備註:

角色 slug 是區分大小寫的。如果你輸入角色名稱如 Editor 而不是 editor,角色映射將無法運作。

現在,前往 Logto 控制台並在左側邊欄點擊 Roles。創建一個名為 group:editors 的新角色並將其分配給一個使用者。然後使用該使用者登入你的 WordPress 網站。你應該會看到該使用者已被分配為 WordPress 中的 Editor 角色。

備註:

如果使用者已登入你的 WordPress 網站,角色映射將不會生效,直到使用者登出並重新登入。

你還可以新增多個角色映射以將多個 Logto 角色映射到 WordPress 角色。目前,插件將嘗試按優先順序映射角色。例如,如果你有以下角色映射:

  • Logto 角色:group:editors,WordPress 角色:editor
  • Logto 角色:group:authors,WordPress 角色:author
  • Logto 角色:group:subscribers,WordPress 角色:subscriber

而某個使用者在 Logto 中同時擁有 group:editorsgroup:authors 角色,該使用者將被分配為 WordPress 中的 Editor 角色。

高級設定

記住會話

預設情況下,插件將記住使用者的會話 2 週。這意味著如果使用者登入你的 WordPress 網站,他們在 2 週內不會被要求再次登入。你可以通過取消勾選插件設定中的 Remember session 選項將此時間縮短為 2 天。

同步個人資料

預設情況下,插件將在每次登入時同步使用者的個人資料。這意味著如果使用者登入你的 WordPress 網站,他們的個人資料將更新為 Logto 的最新信息。你可以通過取消勾選插件設定中的 Sync profile 選項來禁用此功能。

注意:

如果你禁用此功能,角色映射僅在使用者首次登入時生效。

WordPress 表單登入

預設情況下,你可以在 WordPress 登入 URL 後附加 ?form=1 以使用 WordPress 表單登入。這對於測試目的很有用,但如果你不想允許使用者使用 WordPress 表單登入,可以禁用此功能。

使用者名稱策略

在 WordPress 中生成使用者名稱有多種方式。當你依賴電子郵件作為使用者的唯一識別符時,使用預設策略是安全的。

疑難排解

回呼 URL 顯示 404

如果回呼 URL 顯示 404 錯誤,可能是你的 WordPress 重寫規則已過期,需要手動刷新。為此,請前往 WordPress 管理面板中的 Settings > Permalinks(或直接訪問 /wp-admin/options-permalink.php)並點擊 Save Changes

常見問題

如何觸發忘記密碼流程?

有兩種方式可以觸發忘記密碼流程:

  1. 點擊 Logto 登入頁面的忘記密碼連結。
  2. 在 WordPress 登入 URL 後附加 ?action=lostpassword。例如,https://example.com/wp-login.php?action=lostpassword。 這將重定向你到 Logto 的忘記密碼頁面。

如何使用 WordPress 表單登入?

預設情況下,你可以在 WordPress 登入 URL 後附加 ?form=1 以使用 WordPress 表單登入。例如,https://example.com/wp-login.php?form=1

如果你想禁用此功能,可以在插件設定中取消勾選 WordPress form login 選項。

進一步閱讀

終端使用者流程:驗證流程、帳戶流程與組織流程 配置連接器 保護你的 API