アプリケーションに認証メカニズムを実装する必要があります。承認は、クライアントからサーバーに送信されるオブジェクトに基づいています。コントローラー内のすべてのアクションは、リストを引数として取ります。このリスト内のオブジェクトのネストされたプロパティに基づいて、コントローラー アクションへのアクセスを許可または拒否する必要があります。私の最初のアプローチは、カスタムフィルター属性を使用することでした
public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
//SOME LOGIC HERE
}
}
ただし、リクエストが json リクエストであるため、送信されたオブジェクトの関連するすべてのプロパティの値を取得するのは困難です (json 値にしかアクセスできません)。そのため、FilterAttribute の代わりに ActionFilterAttribute を使用できると考えました。
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
}
}
問題は、これが承認の良い解決策であるかどうかです。アクション内で承認を確認したほうがいいのではないでしょうか??