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

Bla*_*ell 8 c# asp.net asp.net-identity asp.net-core asp.net-core-identity

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

它将包含以下表格以获得完全的灵活性:
用户
角色
权限
UserRoles
RolePermissions

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

上面的内容在过去一直对我有用,但现在可以使用ASP.NET Identity切换到ASP.NET Core MVC应用程序.

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

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

我想弄清楚:
我怎样才能复制"角色拥有哪些权限/操作?"的相同行为.概念.

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

通过这种方式,我可以使用Authorize标签检查控制器/操作方法之上的角色.另外在页面级别更进一步说如果用户的角色没有声明隐藏/显示删除按钮声明"DeleteProduct"有点像这个基于视图的授权文档所说的那样.

-

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

Geo*_*bin 10

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

用户角色使用ASP.NET Core Identity 3的权限

有关索赔和政策的更多信息

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

基本上

  1. 建立一个新用户
  2. 发挥新的作用
  3. 提出新的索赔
  4. 将声明添加到角色
  5. 将用户添加到角色
  6. 制定具有声明的新策略(在配置服务期间)
  7. 检查用户是否获得策略授权

注意:不完全确定它是否适用于ASP.Net Core 2或您使用的是哪个版本.