我想在asp.net mvc项目中添加用户授权和身份验证。我是Entity Framework Code First。现在我想为它创建一些默认用户和默认角色。为此,我想创建一个管理员角色,但它阻止了用户和角色命名管理员和管理员已经存在。但是当我在我的数据库表中看到如AspNetUSers,Role等时,我没有找到任何命名的Admin。那我怎么能这样做呢?
如果内置了admin角色和用户,那么密码在哪里。此外,每当我的应用程序首次运行时,如何创建其他默认用户和角色。
我使用的是MVC 5,而不是mvc 4.这两者都有区别。
谢谢,
Abdus Salam Azad
答案 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);
}
}