Bir WebAPI denetleyicisi için bir AuthorizationFilterAttribute uygulayan, ama ben denetleyicisi geçirilen ediliyor parametrelere erişimi görünmüyor vardır : WebAPI AuthorizationFilterAttribute: MVC4 yılında</p> <p>, bu iyi çalışıyor: ActionArguments boş
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")
/// ...
}
}
ama WebAPI içinde
, ben parametre ActionArguments içinde olması gerektiğini düşünüyorum, ama "param" burada boş: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"]
/// ...
}
}
param mı denetleyiciye geçirilen eter başka bir yerde mevcut mu? (Ben filtre özelliğini kaldırdığınızda kontrolörün eylem doğru Kimliği değer elde teyit ettik.)
ParameterBinding, AuthorizationFilters Web API'sında çalıştırıldıktan sonra gerçekleşir, bu nedenle gördüğünüzün beklenen davranış olduğuna inanıyorum. –
Bunun yerine bir ActionFilterAttribute ile yapılabilir gibi görünüyor: http://stackoverflow.com/questions/12817202/accessing-post-or-get-parameters-in-custom-authorization-mvc4-web-api – mikebridge