首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过实体框架代码优先授予授予和撤销权限?

问如何通过实体框架代码优先授予授予和撤销权限?
EN

Stack Overflow用户
提问于 2020-03-14 17:45:47
回答 2查看 403关注 0票数 0

我想要的就是从实体框架(使用代码优先的方法)给用户权限,就像DDL,DML命令给某个用户一样。

EN

回答 2

Stack Overflow用户

发布于 2020-03-16 14:03:15

以下步骤将帮助您创建用户、创建角色、将用户分配到角色以及根据角色限制其访问权限。

  1. 在Visual Studio
  2. Tools > Nuget Package Manager Console中打开您的解决方案>输入Enable-Migrations
  3. Open Migrations > Configuration.cs
  4. Use this作为种子方法;

代码语言:javascript
复制
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")]

下面的控制器将只允许具有管理员角色的登录用户。如果他们的角色不符合要求,他们将被自动重定向到登录页面。

代码语言:javascript
复制
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
   private ApplicationDbContext db = new ApplicationDbContext();

   public ActionResult Accounts()
   {
      return View();
   }
}

  1. 工具> Nuget包管理器控制台>进入Nuget
票数 1
EN

Stack Overflow用户

发布于 2020-03-14 22:15:35

您可以使用Custom Migration Operations,也可以切换到数据库优先的工作流,使用另一个工具管理数据库模式,并定期将该模式reverse engineer到基于代码的模型中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60681474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档