मैं एक WebAPI नियंत्रक के लिए एक AuthorizationFilterAttribute को लागू कर रहा हूँ, लेकिन मैं पैरामीटर नियंत्रक में पारित किया जा रहा है के लिए उपयोग किया प्रतीत नहीं कर रहे हैं :WebAPI AuthorizationFilterAttribute:</p> <p>MVC4 में, यह ठीक काम करता है: ActionArguments खाली
public class MyMVCController : Controller
{
[CanAccessMyResourceApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceMVCAttribute : CanAccessAttributeBase
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var param = filterContext.Controller.ValueProvider.GetValue("id")
/// ...
}
}
लेकिन वेबएपीआई में, मुझे लगता है कि पैरामीटर ActionArguments में होना चाहिए, लेकिन "param" यहां खाली है:
public class MyWebApiController : ApiController
{
[CanAccessMyResourceWebApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceWebApiAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext filterContext)
{
// the debugger shows that ActionArguments is empty:
var param = filterContext.ActionArguments["id"]
/// ...
}
}
परम है क्या यह कहीं और उपलब्ध नियंत्रक में पारित किया जा रहा है? (मैं सत्यापित है कि नियंत्रक की कार्रवाई को सही ढंग से पहचान मूल्य हो रही है जब मैं फिल्टर विशेषता को हटा दें।)
पैरामीटर बाइंडिंग प्राधिकरण के बाद होता है फ़िल्टर वेब एपीआई में चलाए जाते हैं, इसलिए मुझे विश्वास है कि आप जो देख रहे हैं वह व्यवहार की उम्मीद है। –
ऐसा लगता है कि इसे एक्शनफ़िल्टर एट्रिब्यूट के साथ किया जा सकता है: http://stackoverflow.com/questions/12817202/accessing-post-or-get-parameters-in-custom-authorization-mvc4-web-api – mikebridge