我正在研究C#MVC项目,我对控制器上的操作使用了自定义授权方法,但是我需要传递控制器名称和Action,这是我到目前为止所做的,但是给了我标题上的错误,我该如何解决这个问题?
public class ServiceUpdateController : Controller
{
[AuthorizeRoles(Accion = "Index", ControllerProgram = System.Web.HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() )]
// GET: ServiceUpdate
public ActionResult Index()
{
return View();
}
}
答案 0 :(得分:1)
属性是元数据,必须在编译时知道,因此您只能使用常量(直到运行时才知道当前控制器)。
httpContext
方法的protected override bool AuthorizeCore(HttpContextBase httpContext)
参数包含有关当前请求的信息,因此您可以使用
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
string controller = httpContext.Request.RequestContext
.RouteData.Values["controller"].ToString();
....
}