如何在asp.net mvc 5中添加角色和用户?

时间:2014-04-02 04:52:55

标签: asp.net-mvc asp.net-mvc-5.1

我想在asp.net mvc项目中添加用户授权和身份验证。我是Entity Framework Code First。现在我想为它创建一些默认用户和默认角色。为此,我想创建一个管理员角色,但它阻止了用户和角色命名管理员和管理员已经存在。但是当我在我的数据库表中看到如AspNetUSers,Role等时,我没有找到任何命名的Admin。那我怎么能这样做呢?

如果内置了admin角色和用户,那么密码在哪里。此外,每当我的应用程序首次运行时,如何创建其他默认用户和角色。

我使用的是MVC 5,而不是mvc 4.这两者都有区别。

谢谢,

Abdus Salam Azad

1 个答案:

答案 0 :(得分:4)

由于没有人回答过您的问题,我会在迁移时添加一些代码,说明如何通过Seed方法执行此操作。此代码用于使用admin角色为数据库中的初始用户设定种子。就我而言,只有' admin'用户可以向网站添加新用户。

protected override void Seed(PerSoft.Marketing.Website.Models.ApplicationDbContext context)
{
    const string defaultRole = "admin";
    const string defaultUser = "someUser";

    // This check for the role before attempting to add it.
    if (!context.Roles.Any(r => r.Name == defaultRole))
    {
        context.Roles.Add(new IdentityRole(defaultRole));
        context.SaveChanges();
    }

    // This check for the user before adding them.
    if (!context.Users.Any(u => u.UserName == defaultUser))
    {
        var store = new UserStore<ApplicationUser>(context);
        var manager = new UserManager<ApplicationUser>(store);
        var user = new ApplicationUser { UserName = defaultUser };
        manager.Create(user, "somePassword");

        manager.AddToRole(user.Id, defaultRole);
    }
    else
    {
        // Just for good measure, this adds the user to the role if they already
        // existed and just weren't in the role.
        var user = context.Users.Single(u => u.UserName.Equals(defaultUser, StringComparison.CurrentCultureIgnoreCase));
        var store = new UserStore<ApplicationUser>(context);
        var manager = new UserManager<ApplicationUser>(store);
        manager.AddToRole(user.Id, defaultRole);
    }
}