Web Api - 使用注释在每个用户的基础上进行授权

时间:2012-11-05 11:51:32

标签: authorization asp.net-web-api roles custom-attributes

是否可以使用注释实现基于用户的授权程序? 我正在构建REST Api,我希望用户只能访问属于它们的项目。这是通过查看包含用户ID的传输的AccessToken来实现的,我可以从中判断用户是否有权查看所请求的内容。

为了避免每个Controller.Method()中的静态授权过程,我非常希望像这样使用AuthorizationAttribute:

[RestrictAccess(Access.ADMIN, Access.OWNER)]
public SensitiveData GetSensitiveData(Guid userId) {

     return Repository.GetSensitiveData(userId);

}

例如,只允许所有使用AccessRole ADMIN和所请求项目的OWNER的用户调用此方法。

基本上我正在寻找一种在AuthorizationAttribute内部运行时使用Controller参数的方法。这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

using System.Web.Http.Filters;
public class Restriction : ActionFilterAttribute {

    public override void OnActionExecuting(HttpActionContext actionContext) {

        // holds a dictionary of arguments passed to annotated Controller.
        var arguments = actionContext.ActionArguments; 

        base.OnActionExecuting

    }

}