AuthorizeAttribute を実装しようとしているので、特定の子アクションに適用できます。たとえば、その人が承認されてアクセスできるときにメニューを表示したり、エラーやリダイレクトなしでログインページに戻ったりすることを目的としています。私はいくつかの異なる返品オプションを試しましたが、成功しませんでした. 以下の例
//SideMenu.cshtml
@{Html.RenderAction("AdminMenu", "Menu", "Menu");}
@{Html.RenderAction("CommitteeMenu", "Menu", "Menu");}
@{Html.RenderAction("MemberMenu", "Menu", "Menu");}
@{Html.RenderAction("PublicMenu", "Menu", "Menu");}
//MenuController
[BlockChildContentAuthorize(Roles = " Committee, Admin, Full_rights")]
[ChildActionOnly]
public virtual ActionResult CommitteeMenu()
{
....
}
//Authorize.cs
public class BlockChildContentAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
{
if (filterContext.IsChildAction)
{
if (filterContext.HttpContext.Request.IsAuthenticated)
{
}
else
{
filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.Unauthorized);
return;
}
}
}
}