让我们暂时离开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所说的那样。
-
我试图弄清楚我是否在使用这些东西的正确道路上。任何建议或更正都会有所帮助。
答案 0 :(得分:9)
这个人似乎对您的特定问题有潜在的解决方案。
Users Roles Permissions using ASP.NET Core Identity 3
有关声明和政策的更多信息
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims
基本上
注意:不完全确定它是否适用于ASP.Net Core 2或您使用的是哪个版本。