2011-11-06 119 views
1

我有一个asp.net MVC 3系统,其中不同的操作具有不同的权限。网络系统权限最佳实践

所有权限都使用定义所需用户权限的属性进行管理。

我还想删除用户不允许点击的任何按钮(或链接)。

有什么办法可以做到这一点,而不是在我的意见中做了很多if-s?

谢谢。

回答

3

有没有办法做到这一点,而没有在我的意见中做很多if-s?

您可以编写自定义HTML助手来生成这些按钮。例如:

@Html.Button("button text", "role1,role2"); 

自定义助手将检查当前用户是否posses所需要的角色之一,只有在这种情况下产生的相应按钮。

例如:

public static class HtmlExtensions 
{ 
    public static IHtmlString Button(this HtmlHelper htmlHelper, string buttonText, string roles) 
    { 
     var rolesSplit = (roles ?? string.Empty).Split(','); 
     var user = htmlHelper.ViewContext.HttpContext.User; 
     if (!user.Identity.IsAuthenticated || !rolesSplit.Any(user.IsInRole)) 
     { 
      return MvcHtmlString.Empty; 
     } 

     var button = new TagBuilder("button"); 
     button.SetInnerText(buttonText); 
     return new HtmlString(button.ToString()); 
    } 
}