【发布时间】:2015-09-29 14:02:53
【问题描述】:
我有一个实现 AuthorizableApi 类的控制器。
[AttributeUsage(AttributeTargets.Method)]
public class AuthorizableRoute : Attribute { }
public class AuthorizableApi : ApiController
{
public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
{
/* Add functionality here to secure the API */
return base.ExecuteAsync(controllerContext, cancellationToken);
}
}
这允许我保护整个控制器,但我也希望能够保护单个操作。 使用 controllerContext 我可以获取控制器和路由,但我不知道是否可以获取该操作的属性。
[HttpPost]
[AuthorizableRoute]
public HttpResponseMessage DataAction([FromBody] DataType data)
{
/* Actions */
}
所以,我希望能够做类似...
if(Attribute.GetCustomAttribute(myRoute, typeof (AuthorizableRoute)) != null) { }
如果这不可能,那么有什么可行的替代方案?
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api2 asp.net-web-api-routing