Entity Framework, создайте суперпользователя

Я хочу создать суперпользователя в моем приложении 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 вызывает после каждой миграции и должен создавать нового пользователя? Если да, что я делаю не так? Если нет, как еще я могу добавить суперпользователя при первом запуске моего веб-приложения?

1 ответ

Решение

Таким образом, ошибка не была очевидной, в представлении шаблона "вход в систему" ​​(который генерируется ASP.NET MVC) вы должны ввести "email" и пароль, проблема в том, что метод Login в контроллере отправляет это поле электронной почты как имя пользователя, поэтому, если вы создадите пользователя в коде с разными значениями имени и адреса электронной почты, у вас возникнут трудности при входе в систему. Думаю, Microsoft следует изменить имя заполнителя поля в их шаблоне:D

Другие вопросы по тегам