如何在MVC6中播种用户和角色

时间:2016-02-21 13:44:49

标签: asp.net-mvc

我已经在Visual Studio中启动了一个新项目> ASP NET 5> Web应用程序,然后按照初始教程进行操作:

https://docs.asp.net/projects/mvc/en/latest/getting-started/first-mvc-app/index.html

我一直在努力解决的任务之一是使用用户,角色为数据库播种,然后将角色分配给用户。

这个答案或其变体看起来很有成效: https://stackoverflow.com/a/20521530/2591770

但是这段代码:

    var store = new UserStore<ApplicationUser>(context);
    var manager = new UserManager<ApplicationUser>(store);
    var user = new ApplicationUser {UserName = "founder"};

导致立即错误。

CS7036没有任何论据符合所要求的形式参数&#39; optionsAccessor&#39; &#39; UserManager.UserManager(IUserStore,IOptions,IPasswordHasher,IEnumerable&gt;,IEnumerable&gt;,ILookupNormalizer,IdentityErrorDescriber,IServiceProvider,ILogger&gt;,IHttpContextAccessor)&#39;

这是框架中的变化还是我可能在其他地方省略了什么?

我可以取消其余的参数,但不能帮助我感觉我错过了什么。

var userManager = new UserManager<ApplicationUser>(userStore,null,null,null,null,null,null,null,null,null);

1 个答案:

答案 0 :(得分:0)

这就是我做到的。

public class SeedData
{
    public static void Initialize(IServiceProvider serviceProvider)
    {
        var context = serviceProvider.GetService<ApplicationDbContext>();
        var userManager = serviceProvider.GetService<UserManager<ApplicationUser>>();

然后在Startup.cs的Configure方法中:

SeedData.Initialize(app.ApplicationServices);

EDIT1:

var user0 = new ApplicationUser { UserName = "bob", Email = "bob@asd.com" };
var result = userManager.CreateAsync(user0, "Password1!").Result;