2011-11-06 121 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()); 
    } 
}