我在Startup.cs文件中创建了一个方法,其中包含以下方法:
`
private void createRolesandUsers()
{
ApplicationDbContext context = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
// creating first Boss Role and creating a default Boss User
if (!roleManager.RoleExists("Boss"))
{
// first we create Admin rool
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = "Boss";
roleManager.Create(role);
//add a note to get this to rerun?
//Here we create a Admin super user who will maintain the website
var user = new ApplicationUser();
user.UserName = "Boss";
user.Email = "admin@adminaccount.com";
string userPWD = "Pa$$w0rd";
var chkUser = UserManager.Create(user, userPWD);
//Add default User to Role Admin
if (chkUser.Succeeded)
{
var result1 = UserManager.AddToRole(user.Id, "Boss");
}
}
`
然后我从Configuration中调用此方法。它非常适合创建用户和Boss的角色。当我远程登录Azure应用程序的SQL数据库时,我可以确认已创建用户以及该角色。不幸的是,我无法登录帐户,我已经仔细检查了用户名和密码,并将其复制并粘贴到电子邮件输入和密码输入中。有没有人知道我的代码可能出现什么问题导致这个和任何建议来解决它?
提前感谢您的帮助!
答案 0 :(得分:1)
默认MVC模板创建登录页面,需要电子邮件和密码但是登录控制器使用SignInManager.PasswordSignInAsync
,这需要UserName
(不是Email
来到该方法)
快速修复:
update dbo.AspNetUsers set UserName=Email where UserName='Boss'
(并使用电子邮件==用户名登录)。
更长时间的修复:相应地重写login.cshtml
,LoginViewModel
和[HtmlPost]Login
。