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

另請參閱