【问题标题】:Management of users roles based on granular permissions基于细粒度权限的用户角色管理
【发布时间】:2023-03-25 06:32:01
【问题描述】:

我正在尝试使用 Asp.NET MVC 框架使用 C# 编写一个简单的博客。

这是一个简单的博客,用户可以在其中分享帖子和 cmets,管理员可以通过管理面板隐藏、删除和编辑帖子和 cmets。到目前为止一切顺利。

我还试图让管理员控制用户权限,他们可以将用户分配给一个或多个角色。这些角色应该由管理员在创建时定义,他们可以在其中勾选细化权限的项目符号列表。

细化权限的示例包括:隐藏帖子、删除帖子、编辑帖子、阻止用户、验证新注册的用户等。 这些权限被硬编码到应用程序中并且是固定的。

我正在寻求有关如何定义这些权限和角色的指导。

先谢谢了。

【问题讨论】:

  • 您可以通过声明或为上述每个权限创建新角色来完成此操作,然后根据声明或角色对其进行授权...

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


【解决方案1】:

这在很大程度上取决于您的系统。我会为每个权限CanHidePostsCanDeletePostsCanEditPosts 创建角色。并使用这些,因为所有管道大部分都可以通过AuthorizeAttribute 提供给您。但是您必须将所有权限授予管理员用户 - 因为您希望管理员能够做所有事情,而不必将他们添加到每个角色中。

您可以对声明执行相同的操作,但您必须自己做更多的工作。

选择权在你——这里没有错误的方式。

【讨论】:

  • 感谢您的回答。我很难看到整个角色(包含多个权限)是如何存储在数据库中的(以及作为模型)。此外,该角色将如何与 AuthorizeAttribute 一起使用,因为它的名称刚刚由管理员创建。对不起,如果我太含糊了,我仍然在与 .Net 斗争,并希望在开始实施之前将其视为一个整体。
  • 角色不包含权限。您可以通过[Authorize("CanDeletePosts")] 授予对不同操作/控制器的访问权限,具体取决于角色。然后将CanDeletePosts 角色分配给用户。
  • 感谢您澄清这一点。我将尝试以这种方式实现它。在我看来,索赔有点复杂,我有一个截止日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2021-04-01
相关资源
最近更新 更多