ef-code-first – 如何通过使用Identity ASP.NET MVC的代码优先迁移来种子用户和角色6
发布时间:2020-05-23 05:13:05 所属栏目:asp.Net 来源:互联网
导读:我已经创建了一个新的干净的asp.net 5项目(rc1-final).使用身份认证我只需要ApplicationDbContext.cs与以下代码: public class ApplicationDbContext : IdentityDbContextApplicationUser{ protected override void OnModelCreating(ModelBu
|
我已经创建了一个新的干净的asp.net 5项目(rc1-final).使用身份认证我只需要ApplicationDbContext.cs与以下代码: public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
protected override void OnModelCreating(ModelBuilder builder)
{
// On event model creating
base.OnModelCreating(builder);
}
}
请注意ApplicationDbContext使用IdentityDbContext而不是DbContext. 有任何IdentityConfig.cs.我需要把经典的保护覆盖void Seed来创建角色和用户,如果它不存在? 解决方法我这样做的方法是在模型命名空间中创建一个类.public class SampleData
{
public static void Initialize(IServiceProvider serviceProvider)
{
var context = serviceProvider.GetService<ApplicationDbContext>();
string[] roles = new string[] { "Owner","Administrator","Manager","Editor","Buyer","Business","Seller","Subscriber" };
foreach (string role in roles)
{
var roleStore = new RoleStore<IdentityRole>(context);
if (!context.Roles.Any(r => r.Name == role))
{
roleStore.CreateAsync(new IdentityRole(role));
}
}
var user = new ApplicationUser
{
FirstName = "Muhammad",LastName = "Abdullah",Email = "abdullahnaseer999@gmail.com",NormalizedEmail = "ABDULLAHNASEER999@GMAIL.COM",UserName = "Owner",NormalizedUserName = "OWNER",PhoneNumber = "+923366633352",EmailConfirmed = true,PhoneNumberConfirmed = true,SecurityStamp = Guid.NewGuid().ToString("D")
};
if (!context.Users.Any(u => u.UserName == user.UserName))
{
var password = new PasswordHasher<ApplicationUser>();
var hashed = password.HashPassword(user,"secret");
user.PasswordHash = hashed;
var userStore = new UserStore<ApplicationUser>(context);
var result = userStore.CreateAsync(user);
}
AssignRoles(serviceProvider,user.Email,roles);
context.SaveChangesAsync();
}
public static async Task<IdentityResult> AssignRoles(IServiceProvider services,string email,string[] roles)
{
UserManager<ApplicationUser> _userManager = services.GetService<UserManager<ApplicationUser>>();
ApplicationUser user = await _userManager.FindByEmailAsync(email);
var result = await _userManager.AddToRolesAsync(user,roles);
return result;
}
}
在启动时运行此代码.在Startup.cs的配置方法结束后,路由配置后添加以下代码作为Stafford Williams说. SampleData.Initialize(app.ApplicationServices); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 401向web api发送ajax请求时未经授权
- asp.net – Jquery Ajax,不在Internet Explorer中工作
- asp.net-mvc-4 – MVC 4 – Web Api和JSON?
- asp.net-mvc – WebApi Action过滤器调用两次
- asp.net – 是否有相当于mod_pagespeed Apache模块的IIS?
- asp.net-mvc – 从MVC Controller调用Web API来构建并传递模
- Azure上的Asp.Net Core 2.0产生了502.5
- asp.net – 如何接收JSON作为MVC 5操作方法参数
- asp.net – 防止VB.NET中的属性序列化
- asp.net-mvc – 奇怪的错误w / NinjectValidatorFactory更新
推荐文章
站长推荐
- asp.net-mvc – 将类应用于@ Html.ValidationMes
- asp.net-mvc – 在内部OnException(ExceptionCon
- asp.net – 当主机名中有下划线时,表单身份验证无
- asp.net – 全局ASAX中的错误:文件不存在
- asp.net-mvc – 组合数据注释属性
- asp.net-mvc – 使用StructureMap / ASP.MVC / V
- ASP.NET Web API 2:通过本机移动(iOS)应用程序与
- ASP.NET MVC 3中的DropDownList
- 构建ASP.NET应用程序 – 最佳实践
- asp.net-web-api2 – 如何创建HttpRequestHeader
热点阅读
