J'ai une application Web utilisant asp.net core 2.0 avec un noyau d'infrastructure et d'identité. J'essaie de créer quelques utilisateurs après la création de DB. J'ai créé la classe DbInitializer qui est appelé à partir Program.Main()Accéder à UserManager avec PasswordHasher en dehors du contrôleur
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<ApplicationDbContext>();
DbInitializer.Initialize(context);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while seeding the database.");
}
}
host.Run();
}
Le problème est que je ne peux pas accéder à UserManager petit morceau droit PasswordHasher dans ma classe. J'essaie cette answer, et je créé de nouvelles UserManager comme celui-ci
var store = new UserStore<ApplicationUser>(context);
var hasher = new PasswordHasher<ApplicationUser>();
var manager = new UserManager<ApplicationUser>(store, null, hasher, null, null, null, null, null, null);
await manager.CreateAsync(user, "password");
Et puis je crée l'utilisateur. L'utilisateur est créé et je peux le voir dans la base de données, le problème est que je ne peux pas me connecter avec un mot de passe donné. Je pense que le problème est que j'ai créé un nouveau PasswordHasher. Comment puis-je accéder à UserManager qui est utilisé dans l'application? ..