1

我有一个管理员可以创建新用户的应用程序。仅当现有用户数少于管理员允许的数量时才能创建新用户(在帐户表中的数据库中设置的值)

现在我可以轻松地创建一个操作过滤器来检查现有用户数,并根据它返回一个 HttPStatusCodeResult 用于错误请求或 UnAuthorizedResult。

但我想要的是“创建按钮”也应该被禁用。创建按钮位于索引视图上。我还可以通过创建一个自定义 html 帮助程序来做到这一点,该帮助程序根据数据库中现有用户的数量将按钮呈现为禁用状态。

但更进一步,我还有其他实体创建需要根据数据库中现有实体的数量进行门控。

我想找出一种在整个应用程序中执行此操作的标准方法,而不是为每个需求创建一个单独的 ActionLink 帮助程序和一个单独的 ActionFilter。

任何指针将不胜感激。

谢谢

4

1 回答 1

0

您可以做的是设置一个角色以创建用户并在他们创建太多时将其删除。每当他们创建用户时,检查他们是否满足阈值,如果满足,则从他们的帐户中删除此权限。代码将是这样的......

[HttpPost]
[Authorize(Roles="CanCreateUsers")]
public ActionResult CreateUser(User u){
    var currentUser = GetCurrentUser(User.Identity.GetUserId());
    if(currentUser.UsersCreated >= 5){
        UserManager.RemoveFromRoleAsync(currentUser.UserID, "CanCreateUsers");
        //Probably want to refresh their cookies to refresh their roles too
    }

    UserManager.CreateAsync(u);
}

然后检查用户是否可以创建用户就像检查他们的角色一样简单

@if(User.IsInRole("CanCreateUsers"))
{
    <a>Create User</a>
}
于 2014-06-11T16:09:39.130 回答