是否可以使用注释实现基于用户的授权程序? 我正在构建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参数的方法。这可能吗?
谢谢!
答案 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
}
}