簡體   English   中英

如何使用Custom AuthorizeAttribute控制器利用參數值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM