c# – 在自定义属性中查找mvc3操作方法参数
作者:互联网
我正在努力在mvc3应用程序上实现用户权限管理.
我已经使用ControllerName,ActionName定义了我的操作方法,参数包括ParameterName和ParameterType等.
我实现了一个继承自Authorize属性的自定义属性.
我想要做的是找到在我在数据库上定义的内置动作中执行的动作,并计算用户是否具有指定动作的权限.
代码是这样的;
[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]补充道.
解决方法:
我认为反思就是这里的答案.
一旦掌握了控制器和操作,并假设您事先知道了命名空间,就可以检查控制器类型并深入查看其方法和相对签名/重载.
除了控制器和操作之外,检查RouteData的全部内容可以告诉您它传递给方法的内容.
我没有试过,但从你说的话看来它似乎会这样.
标签:c,asp-net-mvc-3,custom-attributes 来源: https://codeday.me/bug/20190630/1336063.html