0
訪問選項的方式,我做了一個自定義的PasswordValidator有自己的一套方案:擬在自定義ASP.NET核心身份執行
class MyValidator : Identity.PasswordValidator<TUser>
{
Task<IdentityResult> ValidateAsync(UserManager<TUser> manager, TUser user, string password)
{
var options = // retrieve options
if (options.CustomRule.Matches(password))
// etc
}
}
class MyPasswordOptions : Identity.PasswordOptions
{
object CustomRule { get; set; }
}
現在我要訪問MyPasswordOptions的實例中MyValidator。我可以,例如:
- 只需在Startup.cs中註冊此類,就像任何選項類一樣,然後將其注入到MyValidator的構造函數中;
- 將MyPasswordOptions類的實例傳遞給services.AddIdentity()中的options.Password屬性,並在MyValidator的構造函數中注入IdentityOptions。
然而,微軟的原始實現通過UserManager的內部屬性來訪問選項,如果它不是內部的話,這對我來說似乎是最好的選擇。
問題: 微軟希望在自定義實現中訪問Asp Identity Core中的選項的方式是什麼?說,我沒有自定義選項類。我仍然無法輕易訪問MyValidator類中的IdentityOptions,而無需注入它們。原來的類(Identity.PasswordValidator)可以。
可悲選項是內部屬性。如果我將它轉換到我自己的類中,它可以用於自定義選項。 –
哦,我明白了,你是對的。但即使這是可能的,你也無法將其投入自己的班級。因爲你不能將基類投射到派生類。看來你必須注入選擇。我會使用separete自定義選項,而不是派生。 –
是的,我想這是唯一正確的方法。謝謝! –