如何限制用户 plans/role 的使用

How to limit usage by user plans/role

我正在使用 Identity,我可以管理角色和授权。我的问题是,您将如何限制计划的使用,因为对于“授权”属性,我只能限制对 action/controller?

的完全访问

我的授权是动态的,我计划根据需要添加尽可能多的计划并在我创建的控制面板中编辑它们。

我想要实现的示例:

  1. 基本套餐可以在相册中添加 5 张图片。
  2. 黄金计划可以在其相册中添加 10 张图片。
  3. 高级计划可以在相册中无限添加照片。

实现此目的的一种方法是添加自定义操作过滤器以检测自定义操作过滤器中先前事件的数量(添加图片),然后适当地路由 - 就像“UpdatePlan”控制器方法一样。

“OnActionExecuting”过滤器 - 在控制器操作执行之前。

此页面有一个“日志”示例,但您的页面会检测计数(无论您如何存储)并采取相应行动。

https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

这有一个 .Net 5 示例 https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0

您要实施灵活的基于权限的授权系统吗?

如果是这种情况,您可以为按功能区域[=25]分组的每个操作定义权限 =].

你可以click this link看看如何实现。

  1. link中的示例定义了两个具有CRUD权限的功能区。
  2. 您可以根据需要定义上传文件的权限。

您只需要一个基于角色的身份验证。你可以用 Claims 做那些事情。 That's the link for you

例如,如果用户有 Gold 计划,您可以给他一个 GoldRole,您可以给他一个您想要的角色。如果用户具有 Gold 角色,那么他可以执行这些操作;

        [Authorize(Roles = "Customer")]
        public IActionResult Profile()
        {
            int userID = getCurrentUser();
            var currentUser = _unitofworkShoppingUser.RepositoryShoppingUser.GetCurrenUserProfile(userID);
            var profileViewModel = new ProfileViewModel
            {
                ShoppingUsers = currentUser
            };
            return View(profileViewModel);
        }

在该代码中,我反映了用户个人资料页面,但我仅在用户通过客户角色进行身份验证时才这样做。它只会在用户具有 Customer 角色时起作用。 它是如此灵活,基于权限的身份验证有点复杂。