ISystemClock은 더 이상 사용되지 않음
Microsoft.AspNetCore.Authentication.ISystemClock은(는) 버전 1.0 이후 ASP.NET Core의 인증 및 ID 구성 요소에서 만료 검사 같은 시간 관련 기능을 단위 테스트할 수 있도록 하는 데 사용되었습니다. .NET 8에는 동일한 기능과 훨씬 더 많은 기능을 제공하는 적절한 추상화 System.TimeProvider이(가) 포함되어 있습니다. 이 기회를 통해 ISystemClock은(는) 더 이상 사용되지 않으며 ASP.NET Core 라이브러리 전체에서 TimeProvider(으)로 대체합니다.
도입된 버전
ASP.NET Core 8.0 미리 보기 5
이전 동작
ISystemClock은(는) DI(종속성 주입)에 의해 인증 및 ID 구성 요소의 생성자에 주입되었으며 테스트를 위해 재정의할 수 있습니다.
보다 쉬운 서식 지정을 위해 기본 SystemClock 구현이 가장 가까운 초에서 잘렸습니다.
새 동작
ISystemClock, SystemClock및 ISystemClock 매개 변수가 있는 인증 처리기 생성자는 사용되지 않는 것으로 표시되었습니다. 코드에서 이러한 API를 사용하면 컴파일 시간에 경고가 생성됩니다.
ISystemClock은(는) 종속성 주입 컨테이너에 남아 있지만 더 이상 사용되지 않습니다. 이후 버전의 컨테이너에서 제거할 수 있습니다.
이제 TimeProvider은(는) 인증 및 ID 구성 요소에 대한 Options
클래스의 설정 가능한 속성입니다. 직접 설정하거나 종속성 주입 컨테이너에 공급자를 등록하여 설정할 수 있습니다.
TimeProvider은(는) 가장 가까운 초에서 잘리지 않습니다. 소비자는 필요에 따라 시간을 올바르게 포맷해야 합니다.
호환성이 손상되는 변경의 형식
이 변경 내용은 원본 호환성에 영향을 미칩니다.
변경 이유
이 변경 내용은 더 쉽게 테스트할 수 있도록 스택 전체에서 시간 추상화를 통합하기 위해 수행되었습니다.
권장 작업
Microsoft.AspNetCore.Authentication.AuthenticationHandler<TOptions> 또는 Microsoft.AspNetCore.Identity.SecurityStampValidator<TUser>에서 파생되는 구성 요소가 있는 경우 ISystemClock 생성자 매개 변수를 제거하고 그에 따라 새 기본 생성자를 호출합니다.
- 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)
마찬가지로 이러한 형식의 Clock
속성을 참조하는 파생 구현은 새 TimeProvider
속성을 대신 참조해야 합니다.
- var currentUtc = Clock.UtcNow;
+ var currentUtc = TimeProvider.GetUtcNow();
옵션 또는 DI를 통해 테스트할 TimeProvider
을(를) 설정할 수 있습니다.
영향을 받는 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)
.NET