MSDN 说:
若要限制对 ASP.NET MVC 视图的访问,请限制对呈现视图的操作方法的访问。为此,MVC 框架提供了 AuthorizeAttribute 类。
我正在使用一个正在加载嵌套局部视图的应用程序(因为没有更好的术语)
public ActionResult Index(int id)
{
....stuff.....
return PartialView("PartialViewName", model);
}
在上面加载的部分视图中,嵌套如下:
PartialView.cshtml
@Html.Partial("AnotherPartial", Model)
-@Html.Partial("AnotherPartial_Partial", Model)
-@Html.Partial("AnotherPartial_Partial_Partial", Model)
@Html.Partial("YetAnotherPartial", Model)
@Html.Partial("StillAnotherPartial", Model)
当我想允许访问一个局部视图但不允许访问另一个时,我该怎么做?这些部分中的特定元素呢?像按钮、面板、div、文本框等...
我在我的数据库中定义了用户和角色,所以我知道谁可以访问什么元素/部分视图。
目前我正在使用自己的 Html Helper 来显示或隐藏部分视图:
public static MvcHtmlString ShowHidePartial(this HtmlHelper helper, string partialName, TheUser user)
{
bool? isVisible = false;
//If I don't know who you are or what you are trying to view
if (user == null || string.IsNullOrEmpty(partialName))
{
return MvcHtmlString.Empty;
}
if (IsAdmin(user))
{
return MvcHtmlString.Create(helper.Partial(partialName).ToString());
}
else
{
isVisible = IsVisible(partialName, user);
}
if (isVisible == true)
{
return MvcHtmlString.Create(helper.Partial(partialName).ToString());
}
return MvcHtmlString.Empty;
}
我可能会坚持使用这种方法来渲染部分,但我仍然不确定如何继续限制对这些部分中元素的访问/可见性。
例如,如果用户有权访问 AnotherPartial.cshtml,并且该部分有 4 个部分允许用户查看/编辑信息(如会员地址、会员状态、会员电话和会员出生日期),所有这些都带有 update/保存按钮。这些部分是 AnotherPartial.cshtml 独有的。
假设我只想允许用户查看(只读)2 个部分,编辑(ReadWrite)1 个部分,并完全隐藏第 4 个部分(隐藏?...无访问权限)。我将如何实现这一目标?
我正在使用 Windows 身份验证来访问应用程序。