我想在ASP.NET MVC应用程序中创建超级用户。我读到我可以通过添加"admin"
角色来实现它,并且按过滤器检查是当前用户具有此角色。
我在教程中读到了如何在应用启动时创建用户和角色,但在所有教程中他们都不使用实体框架。所以我尝试在Configuration.cs
文件夹中的Migration
文件中创建超级用户:
namespace WebApp.Migrations
{
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using WebApp.Models;
internal sealed class Configuration : DbMigrationsConfiguration<WebApp.Models.ApplicationDbContext>
{
protected override void Seed(WebApp.Models.ApplicationDbContext context)
{
var userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(context));
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
roleManager.Create(new IdentityRole { Name = "admin" });
var admin = new ApplicationUser { Email = "mail@growapps.ru", UserName = "Growapps" };
string password = "mail123";
var result = userManager.Create(admin, password);
if (result.Succeeded)
{
userManager.AddToRole(admin.Id, "admin");
}
}
}
}
但是在我添加迁移和更新数据库后,新用户不会出现。我理解正确,每次迁移后Seed方法调用并应创建一个新用户?如果是的话,我做错了什么?如果没有,我的Web应用程序首次启动时如何才能添加超级用户?
答案 0 :(得分:0)
所以错误并不明显,在模板的“登录”视图中(由ASP.NET MVC生成)你应该键入“email”和密码,问题是控制器中的Login方法将该电子邮件字段发送为用户名,所以如果你在代码中用不同的名称和电子邮件值创建用户,你将难以登录。我猜微软应该在他们的模板中更改字段的占位符名称:D