다음을 통해 공유


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, SystemClockISystemClock 매개 변수가 있는 인증 처리기 생성자는 사용되지 않는 것으로 표시되었습니다. 코드에서 이러한 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