让我们暂时离开ASP.NET身份,让我们假设我们正在为我们的应用程序构建自定义身份验证/授权系统 .
It will contain the following tables for full flexibility:
用户
角色
权限
的UserRole
RolePermissions
通过上述内容,我们可以拥有应用程序的完整用户管理部分,其中管理员可以说用户A具有角色B,其具有权限C,D,F .
The above has always worked for me in the past, but lets switch gears now to an ASP.NET Core MVC Application using ASP.NET Identity.
尝试利用Microsoft在UserManager中为您提供ASP.NET核心身份的一切我希望能够仍然实现上述目标,但是ASP.NET核心身份MVC方式 .
What I know:
我可以轻松使用UserManager为用户和角色以及用户角色实现CRUD页面 .
What I am trying to figure out:
我怎样才能复制"which permissions/actions does a role have?"概念的相同行为 .
我最初的猜测是你会将Claim与Roles结合使用 . 声明被分配给角色,即RoleClaims,然后角色将分配给用户 .
通过这种方式,我可以使用Authorize标签检查控制器/操作方法之上的角色 . 另外在页面级别更进一步说如果用户的角色没有声明隐藏/显示删除按钮"DeleteProduct"有点像view-based authorization documentation所说的那样 .
我试图弄清楚我是否正在使用这些东西走上正确的道路 . 任何建议或更正都会有所帮助 .
1 回答
这个人似乎对您的特定问题有潜在的解决方案 .
Users Roles Permissions using ASP.NET Core Identity 3
有关索赔和政策的更多信息
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims
基本上
Build 新用户
发挥新作用
提出新的索赔
向角色添加声明
将用户添加到角色
使用声明制作新策略(在配置服务期间)
检查用户是否获得策略授权
注意:不完全确定它是否适用于ASP.Net Core 2或您使用的是哪个版本 .