跳至主要內容

處理組織權杖 (Organization token) 的權限範圍 (Scope) 更新

完成上述設定後,你可以透過電子郵件發送邀請,受邀者將以指定角色加入組織 (Organization)。

擁有不同組織角色的使用者,其組織權杖 (Organization token) 中會有不同的權限範圍 (Scopes / Permissions)。你的前端應用程式與後端服務都應檢查這些權限範圍,以決定可見功能與允許操作。

如前所述,組織範本 (Organization template) 是保護組織權限 (Organization permissions)或組織層級 API的重要存取控制層。請務必檢閱授權 (Authorization) 章節,並選擇最適合你產品的授權模型。

本章重點說明 權限管理 以及在 Logto 組織權杖 (Organization token) 中處理權限範圍 (Scope) 變更與權限的最佳實踐。

處理組織權杖 (Organization token) 權限範圍 (Scope) 更新​

管理組織權杖 (Organization token) 權限範圍 (Scope) 更新包含:

撤銷現有權限範圍 (Revoke existing scopes)​

例如,將管理員降級為一般成員時,應移除該使用者的權限範圍 (Scopes)。此時,請清除快取的組織權杖 (Organization token),並使用重新整理權杖 (Refresh token) 取得新權杖。新發行的組織權杖會立即反映權限範圍的減少。

賦予新權限範圍 (Grant new scopes)​

可分為兩種情境:

賦予已在驗證系統中定義的新權限範圍​

與撤銷權限範圍類似,若新賦予的權限範圍已在驗證伺服器註冊,發行新組織權杖即可立即反映新權限範圍。

賦予剛新增至驗證系統的新權限範圍​

此時,需觸發重新登入或重新授權(consent)流程,以更新使用者的組織權杖。例如,呼叫 Logto SDK 的 signIn 方法。

即時檢查權限並更新組織權杖 (Organization token)​

Logto 提供 Management API 以查詢組織中使用者的即時權限:

將使用者組織權杖中的權限範圍與即時權限比對,以判斷使用者是否被升級或降級。

  • 若被降級,請清除快取的組織權杖,SDK 會自動發行包含更新權限範圍的新權杖。

    const { clearAccessToken } = useLogto();

    ...
    // 若即時查詢的權限範圍少於組織權杖中的權限範圍
    await clearAccessToken();

    此操作不需重新登入或重新授權。Logto SDK 會自動發行新的組織權杖。

  • 若驗證系統中新增了新的權限範圍,則需觸發重新登入或重新授權流程以更新使用者的組織權杖。例如,使用 React SDK:

    const { clearAllTokens, signIn } = useLogto();

    ...
    // 若即時查詢的權限範圍有新分配的權限範圍
    await clearAllTokens();
    signIn({
    redirectUri: '<your-sign-in-redirect-uri>',
    prompt: 'consent',
    });

    上述程式碼會導向使用者授權頁面 (Consent screen),並於授權後自動導回應用程式,且組織權杖中的權限範圍已更新。