我需要在我的應用程序中實現一些授權機制。授權是基於從客戶端發送到服務器的對象。控制器中的每個動作都將作爲參數List。基於此列表中對象的嵌套屬性,我必須授予或拒絕對控制器操作的訪問。我的第一個方法是使用自定義過濾器屬性ActionFilterAttribute授權
public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
//SOME LOGIC HERE
}
}
然而,因爲事實上該請求是JSON請求,這是我很難獲取發送對象的每一個相關屬性的值(我只有存取權限json值)。這就是爲什麼我認爲我可以使用ActionFilterAttribute而不是FilterAttribute。
public class ActionFilterAuthorization: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var castedList = filterContext.ActionParameters["key"] as List<MyObject>;
//logic here
//throw exception is access is not granted
}
}
問題是這是否是很好的授權解決方案?也許這會更好地檢查行動內的授權?