如何根据用户的权限在View中显示/隐藏元素得到了JSON中的客户端?

时间:2012-07-25 21:13:45

标签: c# asp.net-mvc json security user-permissions

我有一个JSON,它带给我一组用户角色,它们定义了用户可以执行的操作。

JSON在客户端加载。我想使用服务器端代码隐藏此页面上的元素,而不是客户端,因为这种方法更安全,不会被黑客攻击。

//.Net MVC Code
if (!userCanDelete){
    //don't print the selector to the page
}

.Net MVC 2 可以这样做吗?

1 个答案:

答案 0 :(得分:2)

我在我的应用中使用自定义HTML帮助做同样的事情。

我个人在登录期间获得特定人员和具体行动的特定权利。

我从JSON获得了这个权限服务器(它更安全!)。

我将此权限存储在会话中并在我的自定义帮助程序中使用它:

public static class HtmlHelperCustom
{
    public static bool IsAccessibleToUser(this HtmlHelper helper, String element)
    {
        var user = (UserModel)HttpContext.Current.Session["currentUser"];

        return user.rights.Contains(element);
    }
}

然后在我的视图中,我只用元素调用帮助器:

@{ 
    if (Html.IsAccessibleToUser("urlUpdate"))
    {
        <a href="@Html.DisplayFor(modelItem => item.urlUpdate)" target="_blank">
            <i class="icon-wrench" title="update">&nbsp;</i>
        </a>
    }
}

您应该获得JSON服务器端或稍微修改我的解决方案。