ISystemClock je zastaralý
Microsoft.AspNetCore.Authentication.ISystemClock používá ASP.NET komponenty ověřování a identity core od verze 1.0 k povolení testování částí funkcí souvisejících s časem, jako je kontrola vypršení platnosti. .NET 8 obsahuje vhodnou abstrakci, System.TimeProviderkterá poskytuje stejné funkce a mnohem více. Tuto příležitost používáme k zastaralí ISystemClock a nahrazení TimeProvider v rámci knihoven ASP.NET Core.
Zavedená verze
ASP.NET Core 8.0 Preview 5
Předchozí chování
ISystemClock byla vložena do konstruktorů komponent ověřování a identity prostřednictvím injektáže závislostí (DI) a mohla by být přepsána pro účely testování.
Výchozí SystemClock implementace se zkrátila na nejbližší sekundu pro snadnější formátování.
Nové chování
ISystemClock, SystemClocka konstruktory obslužné rutiny ověřování, které mají ISystemClock parametr, byly označeny zastaralé. Použití těchto rozhraní API v kódu vygeneruje upozornění v době kompilace.
ISystemClock zůstává v kontejneru injektáže závislostí, ale už se nepoužívá. Může být odebrán z kontejneru v budoucí verzi.
TimeProvider je nyní nastavená vlastnost Options
pro třídy pro komponenty ověřování a identity. Můžete ho nastavit přímo nebo registrací zprostředkovatele v kontejneru injektáže závislostí.
TimeProvider nezkrátí se na nejbližší sekundu. Očekává se, že uživatelé správně naformátují čas podle potřeby.
Typ zásadní změny
Tato změna má vliv na kompatibilitu zdroje.
Důvod změny
Tato změna byla provedena kvůli sjednocení abstrakce času v rámci zásobníku pro snadnější testování.
Doporučená akce
Pokud máte komponenty odvozené z Microsoft.AspNetCore.Authentication.AuthenticationHandler<TOptions> nebo Microsoft.AspNetCore.Identity.SecurityStampValidator<TUser>, odeberte ISystemClock parametr konstruktoru a odpovídajícím způsobem volejte nový základní konstruktor.
- public BasicAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock)
- : base(options, logger, encoder, clock)
+ public BasicAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder)
+ : base(options, logger, encoder)
Podobně odvozené implementace, které odkazují na Clock
vlastnost na tyto typy by měly odkazovat na novou TimeProvider
vlastnost místo.
- var currentUtc = Clock.UtcNow;
+ var currentUtc = TimeProvider.GetUtcNow();
Můžete nastavit TimeProvider
testování možností nebo prostřednictvím DI.
Ovlivněná rozhraní API
- Microsoft.AspNetCore.Authentication.ISystemClock
- Microsoft.AspNetCore.Authentication.SystemClock
- Microsoft.AspNetCore.Authentication.AuthenticationHandler<TOptions>
- Microsoft.AspNetCore.Authentication.AuthenticationHandler<TOptions>.Clock
- CookieAuthenticationHandler(IOptionsMonitor<CookieAuthenticationOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- FacebookHandler(IOptionsMonitor<FacebookOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- GoogleHandler(IOptionsMonitor<GoogleOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- JwtBearerHandler(IOptionsMonitor<JwtBearerOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- MicrosoftAccountHandler(IOptionsMonitor<MicrosoftAccountOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- NegotiateHandler(IOptionsMonitor<NegotiateOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- OAuthHandler<TOptions>(IOptionsMonitor<TOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- OpenIdConnectHandler(IOptionsMonitor<OpenIdConnectOptions>, ILoggerFactory, HtmlEncoder, UrlEncoder, ISystemClock)
- Microsoft.AspNetCore.Authentication.PolicySchemeHandler.PolicySchemeHandler(IOptionsMonitor<PolicySchemeOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>
- SignInAuthenticationHandler<TOptions>(IOptionsMonitor<TOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- SignOutAuthenticationHandler<TOptions>(IOptionsMonitor<TOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- TwitterHandler(IOptionsMonitor<TwitterOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- WsFederationHandler(IOptionsMonitor<WsFederationOptions>, ILoggerFactory, UrlEncoder, ISystemClock)
- SecurityStampValidator<TUser>(IOptions<SecurityStampValidatorOptions>, SignInManager<TUser>, ISystemClock, ILoggerFactory)
- Microsoft.AspNetCore.Identity.SecurityStampValidator<TUser>.Clock
- TwoFactorSecurityStampValidator<TUser>(IOptions<SecurityStampValidatorOptions>, SignInManager<TUser>, ISystemClock, ILoggerFactory)
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro