mvc3アプリケーションでユーザー権限管理を実装する作業を進めています。カスタム属性のmvc3アクションメソッドパラメータの検索
私はコントローラ名、ACTIONNAMEでデータベースに私のアクションメソッドを定義している、とパラメータなどのParameterNameとのParameterType
は、私が承認属性から継承されたカスタム属性を実装し構成されています。
私がしようとしているのは、データベースに定義されている私の組み込みアクションの中で実行されているアクションを見つけ、ユーザーが指定されたアクションに対して許可を持っているかどうかを計算することです。
コードは次のとおりです。
[HttpPost]
[MyAuthorize]
public ActionResult Edit(VendorPageItem entity)
{
//...
}
public class MyAuthorize: System.Web.Mvc.AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
throw new ArgumentNullException("httpContext");
string controller = httpContext.Request.RequestContext.RouteData.Values["controller"].ToString();
string action = httpContext.Request.RequestContext.RouteData.Values["action"].ToString();
int userId = SessionState.Current.LoginParameter.VendorUserID;
List<string> parameterTypes = new List<string>();
//TODO: Find out action method parameter types.
return IoCWorker.Resolve<IUserRightService>().HasUserRightToAction(userId, controller, action, parameterTypes);
}
}
私の問題は、私のカスタム属性でメソッドのパラメータ型を見つけることです。
ありがとうございました。
編集:それは後のアクションです。 [HttpPost]が追加されました。
私はこのように 'AuthorizeAttribute'を使いましたが、コントローラメソッドのパーミッションをチェックするほうが簡単だと分かりました。 –