在登錄頁面中聯系 API 并成功登錄后,我收到了一個 JWT。而且我想在導航時將 AuthorizationHeader ONCE 設定為在所有頁面中使用。
我不確定是否可以通過 HttpClient 上的依賴注入(使用 ClientFactory)來做到這一點?即建構式在成功登錄后注入HttpClient并設定授權標頭,這是否保存了授權標頭的狀態以供在所有頁面上使用?(我試過這個但對我不起作用,但也許我做錯了。)
或者我是否需要在所有頁面周圍傳遞 JWT 字串并在每次更改到新頁面時設定授權標頭?要進行任何 API 呼叫,每次呼叫授權 API 時都設定這似乎很奇怪?哪個是最好的方法?
這是針對我的 .NET MAUI 專案(基本上是 Xamarin,但更新)。
uj5u.com熱心網友回復:
最好的方法很大程度上取決于您的實施細節。如果 API 密鑰不可用或失效會怎樣?您是為對客戶端的任何呼叫管理單個 API 密鑰,還是為不同范圍或多個用戶管理多個 API 密鑰?
一種方法是使用構建型別化客戶端HttpClientFactory;型別化客戶端本質上允許您撰寫一個自定義類,為其注入 HttpClient 實體并由工廠管理,并且您可以為其撰寫客戶端需要的特定行為,例如通過依賴注入處理 API 密鑰檢查和存盤。IAuthenticatedClient您可能會撰寫一個名為/的介面/實作AuthenticatedClient,它公開諸如這些方法之類的方法UpdateKey()以及SendAuthenticatedAsync()這些方法位于持久存盤之上的位置,例如記憶體快取或資料庫,保留 API 密鑰并將其應用于呼叫,然后再發送通過HttpClient,然后注冊它services.AddHttpClient<IAuthenticatedClient, AuthenticatedClient>();并將其注入您需要的地方。
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0#typed-clients
您還可以考慮通過使用附加到命名或型別化客戶端的委托處理程式來實作諸如 API 密鑰應用程式之類的橫切關注點,這是 Microsoft 檔案中描述的案例之一。可以附加多個處理程式來為通過 HttpClients 發送的出站請求和回應創建中間件管道,以處理標頭、日志記錄、錯誤處理、密鑰管理等。
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0#outgoing-request-middleware
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480364.html
