Как мы можем дать разрешение и отозвать разрешения с помощью Entity Framework в первую очередь? - PullRequest
0 голосов
/ 14 марта 2020

Все, что я хочу, это дать пользователю права доступа из Entity Framework (используя подход, основанный на коде), который подобен командам DDL, DML для определенного пользователя.

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Следующие шаги помогут вам создать пользователя, создать роли, назначить пользователя ролям и ограничить его доступ в зависимости от их роли.

  1. Откройте свое решение в Visual Studio

  2. Инструменты> Консоль диспетчера пакетов Nuget> Ввести Enable-Migrations

  3. Открыть миграцию> Configuration.cs

  4. Используйте это как метод семени;

protected override void Seed(ISPRC.Models.ApplicationDbContext context)
{
  var userStore = new UserStore<ApplicationUser>(context);
  var userManager = new UserManager<ApplicationUser>(userStore);

  userManager.UserValidator = new UserValidator<ApplicationUser>(userManager)
  {
     AllowOnlyAlphanumericUserNames = false,
  };

  var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));

  // Create a User Role
  if (!roleManager.RoleExists("Admin"))
  {
     var role = new IdentityRole();
     role.Name = "Admin";
     roleManager.Create(role);
  }

  if (!context.Users.Any(u => u.UserName == "admin@mail.com"))
  {
      var user = new ApplicationUser
      {
         UserName = "admin@mail.com",
         Email = "admin@mail.com",
         EmailConfirmed = true,
      };

      // Create User
      userManager.Create(user, "Password@777");

      // Add User to Admin Role
      userManager.AddToRole(user.Id, "Admin");
   }
}
Чтобы ограничить определенные роли в доступе к вашим контроллерам или действиям, добавьте [Authorize] или [Authorize(Roles="Admin,User")]

Контроллер, указанный ниже, будет разрешать только зарегистрированным пользователям, имеющим роль администратора. Если их роль не соответствует требованию, они будут автоматически перенаправлены на страницу входа.

[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
   private ApplicationDbContext db = new ApplicationDbContext();

   public ActionResult Accounts()
   {
      return View();
   }
}
Инструменты> Консоль диспетчера пакетов Nuget> Enter Update-Database
0 голосов
/ 14 марта 2020

Вы можете использовать Пользовательские операции миграции , или вы можете переключиться на первый рабочий процесс базы данных, управлять схемой базы данных с помощью другого инструмента и периодически выполнять обратный инжиниринг схемы в модель на основе кода.

...