0

是否可以使用注释实现基于用户的授权过程?我正在构建一个 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 中使用控制器参数的方法。这可能吗?

谢谢!

4

1 回答 1

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

    }

}
于 2012-11-05T15:14:41.710 回答