![](/img/trans.png)
[英]How add custom AuthorizeAttribute for some specific Controller use code on MVC?
[英]How to use Custom AuthorizeAttribute for controller utilizing parameter value?
我正在嘗試保護控制器操作以防止用戶訪問他們無權訪問的實體。 我可以使用以下代碼執行此操作。
public ActionResult Entity(string entityCode)
{
if (CurrentUser.VerifyEntityPermission(entityCode))
{
//populate viewModel...
return View(viewModel);
}
return RedirectToAction("NoAccessToEntity", "Error");
}
我希望能夠為控制器操作本身添加一個屬性。 為了驗證對實體的訪問,我需要查看傳遞給控制器的值以及用戶可以訪問的實體。 這可能嗎?
[EntityAuthRequired]
public ActionResult Entity(string entityCode)
{
//populate viewModel...
return View(viewModel);
}
這樣的事情可能會幫助你。 雖然您可能希望為屬性添加一些其他屬性,以允許您在每個操作上指定entityCode參數,而不是對其進行硬編碼。
public class EntityAuthRequired : FilterAttribute, IAuthorizationFilter
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
//Make sure that this is not NULL before assigning value as string...
var entityCode = filterContext.RouteData.Values["entityCode"] as string;
// do your logic...
if (!allowed)
filterContext.Result = new HttpUnauthorizedResult();
}
}
此外,如果entityCode
不在您的RouteData中,您可以使用filterContext.RequestContext.HttpContext.Request
來查看POST數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.