Remove IConfiguration from AddIdentity

This commit is contained in:
Hao Kung 2015-03-11 15:41:43 -07:00
parent 3e704f477b
commit 649cb0caed
5 changed files with 22 additions and 36 deletions

View File

@ -36,7 +36,7 @@ namespace IdentitySamples
options.DefaultAdminPassword = Configuration.Get("DefaultAdminPassword"); options.DefaultAdminPassword = Configuration.Get("DefaultAdminPassword");
}); });
services.AddIdentity<ApplicationUser, IdentityRole>(Configuration) services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>() .AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders(); .AddDefaultTokenProviders();

View File

@ -18,36 +18,30 @@ namespace Microsoft.Framework.DependencyInjection
return services.Configure(configure); return services.Configure(configure);
} }
public static IdentityBuilder AddIdentity(this IServiceCollection services) public static IServiceCollection ConfigureIdentity(this IServiceCollection services, IConfiguration config)
{ {
return services.AddIdentity<IdentityUser, IdentityRole>(); return services.Configure<IdentityOptions>(config);
} }
public static IdentityBuilder AddIdentity( public static IdentityBuilder AddIdentity(this IServiceCollection services)
this IServiceCollection services,
IConfiguration identityConfig = null,
Action<IdentityOptions> configureOptions = null,
bool useDefaultSubKey = true)
{ {
return services.AddIdentity<IdentityUser, IdentityRole>(identityConfig, configureOptions, useDefaultSubKey); return services.AddIdentity<IdentityUser, IdentityRole>(configureOptions: null);
}
public static IdentityBuilder AddIdentity<TUser, TRole>(
this IServiceCollection services)
where TUser : class
where TRole : class
{
return services.AddIdentity<TUser, TRole>(configureOptions: null);
} }
public static IdentityBuilder AddIdentity<TUser, TRole>( public static IdentityBuilder AddIdentity<TUser, TRole>(
this IServiceCollection services, this IServiceCollection services,
IConfiguration identityConfig = null, Action<IdentityOptions> configureOptions)
Action<IdentityOptions> configureOptions = null,
bool useDefaultSubKey = true)
where TUser : class where TUser : class
where TRole : class where TRole : class
{ {
if (identityConfig != null)
{
if (useDefaultSubKey)
{
identityConfig = identityConfig.GetSubKey("identity");
}
services.Configure<IdentityOptions>(identityConfig);
}
// Services used by identity // Services used by identity
services.AddOptions(); services.AddOptions();
services.AddDataProtection(); services.AddDataProtection();

View File

@ -107,7 +107,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test
builder.UseServices(services => builder.UseServices(services =>
{ {
DbUtil.ConfigureDbServices<TestDbContext>(ConnectionString, services); DbUtil.ConfigureDbServices<TestDbContext>(ConnectionString, services);
services.AddIdentity<TUser, TRole>(null, options => services.AddIdentity<TUser, TRole>(options =>
{ {
options.Password.RequiredLength = 1; options.Password.RequiredLength = 1;
options.Password.RequireLowercase = false; options.Password.RequireLowercase = false;

View File

@ -77,7 +77,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework.Test
services.AddEntityFramework() services.AddEntityFramework()
.AddSqlServer() .AddSqlServer()
.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(ConnectionString)); .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(ConnectionString));
services.AddIdentity<ApplicationUser, IdentityRole>(null, options => services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{ {
options.Password.RequiredLength = 1; options.Password.RequiredLength = 1;
options.Password.RequireLowercase = false; options.Password.RequireLowercase = false;

View File

@ -38,10 +38,8 @@ namespace Microsoft.AspNet.Identity.Test
Assert.Equal("AspNet.Identity.SecurityStamp", options.ClaimsIdentity.SecurityStampClaimType); Assert.Equal("AspNet.Identity.SecurityStamp", options.ClaimsIdentity.SecurityStampClaimType);
} }
[Theory] [Fact]
[InlineData(true)] public void IdentityOptionsFromConfig()
[InlineData(false)]
public void IdentityOptionsFromConfig(bool useDefaultSubKey)
{ {
const string roleClaimType = "rolez"; const string roleClaimType = "rolez";
const string usernameClaimType = "namez"; const string usernameClaimType = "namez";
@ -67,14 +65,8 @@ namespace Microsoft.AspNet.Identity.Test
Assert.Equal(roleClaimType, config.Get("identity:claimsidentity:roleclaimtype")); Assert.Equal(roleClaimType, config.Get("identity:claimsidentity:roleclaimtype"));
var services = new ServiceCollection(); var services = new ServiceCollection();
if (useDefaultSubKey) services.AddIdentity();
{ services.ConfigureIdentity(config.GetSubKey("identity"));
services.AddIdentity(config);
}
else
{
services.AddIdentity(config.GetSubKey("identity"), null, useDefaultSubKey);
}
var accessor = services.BuildServiceProvider().GetRequiredService<IOptions<IdentityOptions>>(); var accessor = services.BuildServiceProvider().GetRequiredService<IOptions<IdentityOptions>>();
Assert.NotNull(accessor); Assert.NotNull(accessor);
var options = accessor.Options; var options = accessor.Options;
@ -103,8 +95,8 @@ namespace Microsoft.AspNet.Identity.Test
}; };
var config = new Configuration(new MemoryConfigurationSource(dic)); var config = new Configuration(new MemoryConfigurationSource(dic));
var services = new ServiceCollection(); var services = new ServiceCollection();
services.AddIdentity(config, services.ConfigureIdentity(config.GetSubKey("identity"));
o => { o.User.RequireUniqueEmail = false; o.Lockout.MaxFailedAccessAttempts++; }); services.AddIdentity<IdentityUser, IdentityRole>(o => { o.User.RequireUniqueEmail = false; o.Lockout.MaxFailedAccessAttempts++; });
var accessor = services.BuildServiceProvider().GetRequiredService<IOptions<IdentityOptions>>(); var accessor = services.BuildServiceProvider().GetRequiredService<IOptions<IdentityOptions>>();
Assert.NotNull(accessor); Assert.NotNull(accessor);
var options = accessor.Options; var options = accessor.Options;