我有一个应用程序,其中管理员可以创建新用户。只有当现有用户数量小于管理员允许的数量(帐户表中数据库中设置的值)时,才能创建新用户
现在我可以很容易地创建一个动作过滤器检查现有的用户数量,并根据它,返回一个HttPStatusCodeResult的坏请求,或UnAuthorizedResult。
但是我想要的是"创建按钮"也应该被禁用。create按钮位于Index视图上。我还可以通过创建一个自定义html帮助器来实现这一点,该帮助器根据数据库中现有用户的数量将按钮呈现为禁用状态。
但是更进一步,我有其他实体创建需要根据数据库中现有实体的计数进行门控。
我想找出在整个应用程序中做到这一点的标准方法,而不是为每个需求创建一个单独的ActionLink helper和一个单独的ActionFilter。
请指教。
谢谢
您可以做的是为创建用户的能力设置一个角色,并在用户创建了太多用户时将其删除。每当他们创建用户时,检查他们是否满足阈值,如果满足,则从其帐户中删除此特权。代码应该是这样的…
[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>
}