Доступ к параметру маршрутизации атрибута MVC5 в пользовательском атрибуте?

У меня возникли проблемы с проектом WebAPI, использующим MVC5 и маршрутизацию атрибутов.

По сути, это то, что я хочу сделать:

[Route("Products/{CategoryId}")]
[ClaimsAuthorize([{CategoryId}], ClaimsEnum.CanViewProducts)]
public Products Get(){
  ...
}

Где [{CategoryId}] — это место, где я хочу передать CategoryId обработчику атрибутов. Обработчик CustomAttribute выглядит так:

public ClaimsAuthorizeAttribute(string CategoryId, params ClaimsEnum[] requiredClaimTypes)

Где ClaimsAuthorize — это настраиваемый атрибут, переопределяющий атрибут Authorize.

Как я могу получить доступ к параметру CategoryId из пользовательского атрибута? Это возможно? Или есть другой способ передать его обработчику атрибута?

Это псевдокод, но описывает мою проблему. Мне нужно знать категорию, которая передается с URL-адресом запроса при обработке авторизации. Я знаю, что могу использовать заголовки, но я хочу, чтобы все было видно в URL, если это возможно.

Спасибо :)


person Astravagrant    schedule 24.02.2015    source источник


Ответы (1)


В итоге я использовал этот подход:

[Защищенный контроллер]

[Route("Products/{CategoryId}")]
[ClaimsAuthorize(ClaimsEnum.CanViewProducts)]
public Products Get(){
  ...
}

ClaimsAuthorizeAttribute.cs

protected override bool IsAuthorized(HttpActionContext actionContext)
        {
_categoryId = actionContext.ControllerContext.RouteData.Values["CategoryId"].ToString();
person Astravagrant    schedule 25.02.2015