Web系统权限最佳实践

时间:2011-11-06 07:27:33

标签: asp.net-mvc-3 web-applications permissions

我有一个asp.net MVC 3系统,不同的动作有不同的权限。

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

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

如果没有在我的观点中做很多if-s,有没有办法这样做?

感谢。

1 个答案:

答案 0 :(得分:3)

  

如果没有在我的观点中做很多if-s,有没有办法这样做?

您可以编写将生成这些按钮的自定义HTML帮助程序。例如:

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

自定义帮助程序将检查当前用户是否拥有所需角色之一,并且仅在这种情况下生成相应的按钮。

例如:

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());
    }
}