与自定义身份验证中的角色权限相比,ASP.NET核心身份中的角色声明

时间:2017-10-30 19:27:16

标签: c# asp.net asp.net-core asp.net-identity asp.net-core-identity

让我们暂时离开ASP.NET身份,让我们假设我们正在为我们的应用程序构建自定义身份验证/授权系统。

它将包含以下表格以获得充分的灵活性:
用户
角色
权限

的UserRole RolePermissions

通过上述内容,我们可以拥有应用程序的完整用户管理部分,其中管理员可以说用户A具有角色B,其具有权限C,D,F。

以上一直对我有用,但现在可以使用ASP.NET Identity切换到ASP.NET Core MVC应用程序。

尝试利用Microsoft在UserManager中为您提供ASP.NET核心身份的一切我希望能够仍然实现上述目标,但是ASP.NET核心身份MVC方式。

我所知道的:
我可以轻松使用UserManager为用户和角色以及用户角色实现CRUD页面。

我想弄清楚的是什么:
如何复制"角色具有哪些权限/操作的相同行为?"概念

我最初的猜测是你会将声明与角色结合使用。声明被分配给角色,即RoleClaims,然后角色将分配给用户。

通过这种方式,我可以使用Authorize标签检查控制器/操作方法之上的角色。另外,如果用户的角色没有声明" DeleteProduct"则在页面级别更进一步说隐藏/显示删除按钮。有点像view-based authorization documentation所说的那样。

-

我试图弄清楚我是否在使用这些东西的正确道路上。任何建议或更正都会有所帮助。

1 个答案:

答案 0 :(得分:9)

这个人似乎对您的特定问题有潜在的解决方案。

Users Roles Permissions using ASP.NET Core Identity 3

有关声明和政策的更多信息

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims

基本上

  1. 建立新用户
  2. 扮演新角色
  3. 提出新的声明
  4. 向角色添加声明
  5. 将用户添加到角色
  6. 制作带有声明的新政策(在配置服务期间)
  7. 检查用户是否获得政策授权
  8. 注意:不完全确定它是否适用于ASP.Net Core 2或您使用的是哪个版本。