我有以下方法。
IdentityBuilder IServiceCollection.AddIdentityCore<User>(Action<IdentityOptions> setupAction)
我用的方法如下:
services.AddIdentityCore<User>(x => {
x.Password.RequiredLength = 8;
})
这个方法可以用,但我想创建一个有默认值的类
public class IdentityDefaultOptions : IdentityOptions {
public IdentityDefaultOptions() {
Password.RequiredLength = 8;
}
}
并按如下方法使用它
services.AddIdentityCore<User>(x => new IdentityOptions())
编译成功了,但是Password.RequiredLength没有被应用。
我缺少什么?
职能
services.AddIdentityCore<User>(x => {
x.Password.RequiredLength = 8;
})
不返回任何值,而是改变了 x
作为参数到达的。
你必须得到一个 IdentityOptions
参数,并改变传递的对象。
public void DefaultIdentityOptions(IdentityOptions x)
{
x.Password.RequiredLength = 8;
}
为什么你要创建一个不同的类型?
如果您试图配置 IdentityOptions
实例,或者使用依赖注入来对这个配置做出其他决定。您可以配置一个实现了 IConfigureOptions<IdentityOptions>
;
public class MoreIdentityOptions : IConfigureOptions<IdentityOptions>{
public MoreIdentityOptions(/* inject types */){}
public void Configure(IdentityOptions options){
x.Password.RequiredLength = 8;
}
}
services.AddIdentityCore<User>();
services.AddTransient<IConfigureOptions<IdentityOptions>, MoreIdentityOptions>();