預設驗證配置
從 .NET 7 開始,我們便在 ASP.NET Core 中的驗證區域引進新的行為。
過去,使用者必須在 AddAuthentication
呼叫中設定要由驗證和授權處理常式使用的預設驗證配置:
builder.Services.AddAuthentication("MyDefaultScheme");
之後,當註冊「單一」驗證配置時,該配置會被視為預設配置。 舉例來說,在下列程式碼中,"MyDefaultScheme" 會被視作預設配置。
builder.Services.AddAuthentication().AddOAuth("MyDefaultScheme");
這項變更可能會公開應用程式中的意外行為變更,例如驗證選項比預期中還早驗證。
導入的版本
ASP.NET Core 7.0
先前的行為
過去,當使用者未在 AddAuthentication
呼叫中提供預設配置時,不會設定任何預設配置。
builder.Services.AddAuthentication().AddCookie();
這影響到應用程式層中驗證處理常式的行為。
新的行為
從 ASP.NET Core 7.0 開始,如果只有單一配置在應用程式中註冊,則該配置會被視為預設。 在下列程式碼中,會將 CookieDefaults.AuthenticationScheme
視為預設配置。
builder.Services.AddAuthentication().AddCookie();
不過,在下一個程式碼片段中,因為註冊了多個配置,所以不會設定預設。
builder.Services.AddAuthentication().AddCookie().AddJwtBearer();
中斷性變更的類型
此變更會影響二進位相容性。
變更原因
進行這項變更的原因,是為了在設定驗證和設定合理預設時減少重複使用的情形。
建議的動作
該變更只會影響有註冊單一配置的應用程式。 針對這些案例,建議您確認自己的應用程式已準備好處理單一配置是預設的假設。 舉例來說,請確認與該配置相關的選項設定無誤。
或者,您可以設定 Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme
應用程式內容旗標來停用新的行為。
受影響的 API
驗證 API。