J'ai une application web ASP.NET MVC 5 avec ASP.NET Identity (Individual Accounts). Mais j'ai besoin de pouvoir enregistrer de nouveaux utilisateurs à partir d'une application console.
Je transfère donc certaines des classes ASP.NET Identity de l'application Web dans une bibliothèque de classes qui sera partagée entre l'application Web et l'interface de programmation.
J'ai réussi à déplacer les éléments suivants :
public class PortalDbContext : IdentityDbContext<PortalUser>
{
public PortalDbContext(string connectionString)
: base(connectionString, throwIfV1Schema: false)
{
}
public static PortalDbContext Create(string connectionString)
{
return new PortalDbContext(connectionString);
}
}
public class PortalUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<PortalUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
public class PortalUserManager : UserManager<PortalUser>
{
public PortalUserManager(IUserStore<PortalUser> store) : base(store)
{
}
public async Task<IdentityResult> RegisterUser(string email, string password)
{
PortalUser user = new PortalUser { UserName = email, Email = email };
return await this.CreateAsync(user, password);
}
}
Mais je n'ai aucune idée de l'endroit où obtenir le IUserStore<PortalUser>
el PortalUserManager
besoins de.
Dans l'application web, ce gestionnaire est récupéré à partir de HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>()
que je ne peux manifestement pas utiliser dans une bibliothèque de classes.