WebAssembly 應用程式中的驗證
我們已將 Blazor WebAssembly 應用程式中的驗證支援,更新為依賴歷程記錄狀態,而不是 URL 中的查詢字串。 因此,透過查詢字串傳遞傳回 URL 的現有應用程式,將無法在成功登入之後重新導向回原始頁面。
現有應用程式應該使用新的 NavigateToLogin 擴充方法,因為它能夠將資料正確地流向登入頁面。
導入的版本
.NET 7
先前的行為
傳回 URL 以前會在查詢字串中指定為 ?returnUrl=<<return-url>>
。
新的行為
從 .NET 7 開始,傳回 URL 和其他傳遞至 authentication/login
頁面的參數會透過頁面的 history.state
項目來傳遞。
中斷性變更的類型
這項變更會影響二進位相容性。
變更原因
我們決定改為使用 history.state
而非查詢字串,因為它可簡化實作,並移除與透過查詢字串傳遞資料相關聯的介面攻擊區域。
建議的動作
大部分應用程式都有 RedirectToLogin.razor 檔案,您可以如下所示進行更新:
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Options
@inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> Options
@code {
protected override void OnInitialized()
{
Navigation.NavigateToLogin(Options.Get(Microsoft.Extensions.Options.Options.DefaultName).AuthenticationPaths.LogInPath);
}
}
受影響的 API
- Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager (已淘汰,由新的 NavigationManagerExtensions.NavigateToLogout 方法取代)