Web API中的每个操作调用的自定义授权

时间:2014-06-17 13:16:46

标签: asp.net-web-api authorization

我需要为用户授予调用确切操作的权限。此外,每个权限规则还可以包含操作参数的验证规则:

[CustomAuth]
public MyController : ApiController
{
    [ValidateAccess, ActionName("Myaction")]    
    public void MyAction([MyTypeAccess] MyType myType)
    {
    }
}

在我的逻辑中,我需要检查用户是否可以调用此操作,并且可以使用传递的MyType值(自定义验证)调用此操作。 目前我没有看到如何从自定义AuthorizeAttribute获取属性,我看到城堡拦截器的解决方案,我用于我的另一个目的(来自调用信息).. 是否有实现此自定义授权的标准方法?

1 个答案:

答案 0 :(得分:1)

在此问题上,没有在Web API中找到任何直接解决方案。

当我使用Castle拦截器时,我在所有控制器上添加了一个新的拦截器,它们支持auth。 Interceptor提供对调用的访问,您可以检索传递给控制器​​/操作的任何属性和值。

操作的验证属性表示您需要在此调用上应用验证例程,ActionName标识调用的类型(如果需要,将来这将被移动到自己的属性,因为旧的控制器中的操作名称可能会有所不同的版本)。

如果需要验证操作参数,可以使用一组属性,这些属性用于标识参数类型和验证算法。