2012-11-05 13 views
0

使用註釋可以實現基於用戶的授權過程嗎? 我正在構建一個REST API,我希望用戶只能訪問屬於他們的項目。這是通過查看傳送的包含用戶ID的AccessToken來實現的,從中我可以判斷用戶是否有權查看請求的內容。Web Api - 使用註釋以每個用戶爲基礎的授權

爲了避免各Controller.Method(內部靜態授權程序)我非常喜歡只使用一個AuthorizationAttribute這樣的:

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

    return Repository.GetSensitiveData(userId); 

} 

例如,此方法應只允許爲由所有用戶使用AccessRole ADMIN和所請求項目的所有者調用。

本質上我正在尋找一種方法來在我的AuthorizationAttribute中運行時使用Controller的參數。這可能嗎?

謝謝!

回答

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 

    } 

} 
+0

這是否對你的工作?我的ActionArguments沒有得到我傳遞給Controller的參數的副本.... – mikebridge