ASP.NET 核心权限

ASP.NET Core Permissions

我迷失在管理用户可以做什么和不能做什么的所有选项中。 我从角色开始:[Authorize(Roles = Constants.Roles.ModeratorAndUp)]。其中 ModeratorAndUp 是字符串 "Moderators, Administrators".
但我需要更灵活的方法。在过去的 3 个小时里,我正在阅读有关索赔和许可的信息。我还发现了这个有趣的博客 post.

我正在使用 Angular 和 ASP.NET Core 以及 Universal template. For authentication I am using OpenIddict我正在关注一本书。

我想使用 JWT 令牌进行授权和身份验证。我不知道在 .NET Core 中应该如何处理权限,但我有 100 个不同的角色,而且一团糟。而且当我创建新用户时,我需要手动添加它大约 20 个角色。如果我可以创建具有 Roles/Permissions 的组,然后将用户添加到该组,那就太好了。但不知道这种设计如何与 OpenIdDict 和 JWT 令牌授权一起玩。

谁能给我指出正确的方向,然后我自己研究。
我不确定我是否应该构建一些系统来在我更改组 Permissions/Roles 时自动更新用户角色,我是否应该使用声明...我想使用 [Authorize] 属性,因为它确实简化了事情.

What/how/which 是在 ASP.NET Core 中做 JWT Token authentication/authorisation 的最佳实践。

将声明视为比角色更灵活的东西。也就是说,如果您有复杂的业务规则,不一定简单地映射到用户所属的组,您可以将您的权限封装到权限中(类,其职责是确定给定用户是否具有特定权限给定的资源。在此处查看更多信息:http://ardalis.com/favor-privileges-over-role-checks

根据我的经验,这往往会降低 UI 层中的许多条件复杂性。