DefaultKeyResolution.ShouldGenerateNewKey 不再反映預設索引鍵是否接近其到期時間。
推出的版本
ASP.NET Core 9.0 Preview 3
先前的行為
這是未記載但一致的 API ShouldGenerateNewKey 功能,也就是 true 如果預設金鑰在到期時間的兩天內(過度簡化),則為 。 根據 ICacheableKeyRingProvider 的輪詢間隔來設置前置時間是不合理的,因為 IDefaultKeyResolver.ResolveDefaultKeyPolicy 不應依賴於此(例如,替代的實作方式可能不了解這些細節)。
新行為
從 .NET 9 開始,如果 ShouldGenerateNewKey 為 true,表示沒有預設密鑰,或基於其他原則原因(在特製化實作中 IDefaultKeyResolver),應該產生新的密鑰。 系統 ICacheableKeyRingProvider 會自行決定到期時間是否足夠接近,從而需要生成新的密鑰。
破壞性變更的類型
此變更為行為變更。
變更的原因
這項變更有兩個原因:
- 為了在接近到期時間變更金鑰生成的邏輯。
- 為了更容易地實作自訂
IDefaultKeyResolver。
建議的動作
如果您有 IDefaultKeyResolver 嘗試複製到期邏輯的實作,則可以移除該邏輯(不過保留它也是可以的)。
如果您直接使用 IDefaultKeyResolver 來判斷是否即將到期,您可以直接檢查預設密鑰的 ExpirationDate 屬性。
受影響的 API
Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey