需要幫助了解處理需要附加資訊的場景的標準流程。
背景:我們有許多產品實作,都與中央單點登錄服務器集成。注冊客戶可以選擇開始按需使用新產品。但有些產品要求客戶在使用產品之前執行一些一次性設定步驟——這些步驟僅在第一次使用產品時才需要。
假設客戶在頁面 https:// product-abc .ourdomain.com 上。現在單擊該產品中的鏈接,例如“做某事(注意,這會將您重定向到product-xyz)”。此時,客戶被重定向到 https:// product-xyz .ourdomain.com。在這里,我們想檢測客戶是否是第一次使用該產品,如果是,則將用戶重定向到設定頁面,我們可以在其中提示他們提供特定于產品的附加資訊。另一方面,如果客戶已經為產品進行了配置,他們只需導航到產品頁面并繼續使用它。
我想知道是否有類似于401 Unauthorized流程的東西來處理這個問題。通過身份驗證流程,
- 客戶端嘗試訪問受保護的資源。
- 服務器檢查呼叫者是否具有必要的身份驗證,如果沒有,則
401 Unauthorized在標頭中回傳帶有其他詳細資訊的狀態代碼WWW-Authenticate。 - 客戶端執行身份驗證 - 例如通過與中央單點登錄服務器集成 - 然后重新嘗試原始請求,這次成功了。
我想知道是否有類似的流程,例如,
- 客戶端嘗試訪問受保護的資源。
- 服務器檢查客戶端是否可以使用它。在我們的案例中,如果客戶第一次訪問產品,此檢查將確定是否需要額外設定。例如,客戶必須向我們提供他們的通信地址,以便我們可以為特定客戶設定資料租賃。在這里,我想回傳一個 HTTP 狀態代碼,例如,
4xx Setup Required在標頭中包含附加資訊,例如WWW-SetupInfo. - 完成初始設定流程后,客戶將被重定向到主要產品并繼續使用它。
似乎與我的用例匹配的最近狀態代碼是402 Payment Required,但 product-xyz 不需要任何特定的訂閱或付款。我們只需要一些特定于產品的附加資訊來進行初始配置。
我可以通過使用 3xx 重定向進行自定義實作來處理它,但我想知道是否有更好的處理方法。
感謝您的任何指示。
uj5u.com熱心網友回復:
除非您使用基本身份驗證,否則您不想使用401 Unauthorized" status code with a WWW-Authenticate` 標頭。瀏覽器中的這種內置機制的功能非常有限:
- 始終提示輸入用戶名和密碼,沒有通過外觀或自定義作業流程自定義流程的機制。你說你想使用單點登錄。
401 Unauthorized不兼容。 - 沒有注銷機制
- 沒有會話超時機制
因此,幾乎所有網站都使用基于表單和 cookie 的登錄。如果有人沒有登錄,您應該使用302 Temporary redirect登錄頁面。
同樣,如果有人沒有完成初始設定以使用特定頁面,您將不會使用特殊的 HTTP 狀態。您可以向他們展示帶有200 OK表單的頁面,請求您需要的資料,或者使用 a302 Temporary redirect將他們帶到另一個 URL 上的表單。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439526.html
