Added new methods on IdentityBuilder

This commit is contained in:
Suhas Joshi 2014-12-17 15:54:17 -08:00
parent e3602fac98
commit ac86d94eb6
2 changed files with 56 additions and 1 deletions

View File

@ -76,5 +76,15 @@ namespace Microsoft.AspNet.Identity
.AddTokenProvider(typeof(PhoneNumberTokenProvider<>).MakeGenericType(UserType))
.AddTokenProvider(typeof(EmailTokenProvider<>).MakeGenericType(UserType));
}
public IdentityBuilder AddUserManager<TUserManager>() where TUserManager : class
{
return AddScoped(typeof(UserManager<>).MakeGenericType(UserType), typeof(TUserManager));
}
public IdentityBuilder AddRoleManager<TRoleManager>() where TRoleManager : class
{
return AddScoped(typeof(RoleManager<>).MakeGenericType(RoleType), typeof(TRoleManager));
}
}
}

View File

@ -10,7 +10,6 @@ using System;
using System.Threading;
using System.Threading.Tasks;
using System.Linq;
using Microsoft.AspNet.Security.DataProtection;
namespace Microsoft.AspNet.Identity.Test
{
@ -62,6 +61,28 @@ namespace Microsoft.AspNet.Identity.Test
Assert.NotNull(thingy);
}
[Fact]
public void CanOverrideUserManager()
{
var services = new ServiceCollection();
services.AddIdentity<TestUser, TestRole>()
.AddUserStore<NoopUserStore>()
.AddUserManager<MyUserManager>();
var myUserManager = services.BuildServiceProvider().GetRequiredService(typeof(UserManager<TestUser>)) as MyUserManager;
Assert.NotNull(myUserManager);
}
[Fact]
public void CanOverrideRoleManager()
{
var services = new ServiceCollection();
services.AddIdentity<TestUser, TestRole>()
.AddRoleStore<NoopRoleStore>()
.AddRoleManager<MyRoleManager>();
var myRoleManager = services.BuildServiceProvider().GetRequiredService<RoleManager<TestRole>>() as MyRoleManager;
Assert.NotNull(myRoleManager);
}
[Fact]
public void EnsureDefaultServices()
{
@ -203,5 +224,29 @@ namespace Microsoft.AspNet.Identity.Test
}
}
private class MyUserManager : UserManager<TestUser>
{
public MyUserManager(IUserStore<TestUser> store,
IOptions<IdentityOptions> optionsAccessor,
IPasswordHasher<TestUser> passwordHasher,
IEnumerable<IUserValidator<TestUser>> userValidators,
IEnumerable<IPasswordValidator<TestUser>> passwordValidators,
IUserNameNormalizer userNameNormalizer,
IEnumerable<IUserTokenProvider<TestUser>> tokenProviders,
IEnumerable<IIdentityMessageProvider> msgProviders) :
base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, userNameNormalizer, tokenProviders, msgProviders)
{
}
}
private class MyRoleManager : RoleManager<TestRole>
{
public MyRoleManager(IRoleStore<TestRole> store,
IEnumerable<IRoleValidator<TestRole>> roleValidators) : base(store, roleValidators)
{
}
}
}
}