Asp.net mvc 如何获取PermisoAttribute中表示的用户名MVC

Asp.net mvc 如何获取PermisoAttribute中表示的用户名MVC,asp.net-mvc,Asp.net Mvc,我有这样一个PermisoAttribute public class PermisoAttribute : ActionFilterAttribute { public string username { get; set; } public int ProgramId { get; set; } public int ModuleId { get; set; } public o

我有这样一个
PermisoAttribute

public class PermisoAttribute : ActionFilterAttribute
        {
            public string username { get; set; }
            public int ProgramId { get; set; }
            public int ModuleId { get; set; }

            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);

                if (!permisos(this.username,this.ProgramId,this.ModuleId))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                    {
                        controller = "Home",
                        action = "Denegado"
                    }));
                }
            }
        }
[HttpGet]
[Permiso(username = User.Identity.Name, ModuleId = 3, ProgramId = 2)]
public ActionResult Transactions()
{
  //do something here 
}
这个类使用permisos来知道用户是否有权限,该类返回true或false。但是当我在控制器中使用PermisoAttribute时,会收到行为错误

错误CS0120非静态字段需要对象引用, 方法或属性“Controller.User”

我像这样使用permissoAttribute

public class PermisoAttribute : ActionFilterAttribute
        {
            public string username { get; set; }
            public int ProgramId { get; set; }
            public int ModuleId { get; set; }

            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);

                if (!permisos(this.username,this.ProgramId,this.ModuleId))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                    {
                        controller = "Home",
                        action = "Denegado"
                    }));
                }
            }
        }
[HttpGet]
[Permiso(username = User.Identity.Name, ModuleId = 3, ProgramId = 2)]
public ActionResult Transactions()
{
  //do something here 
}

我使用此代码
User.Identity.Name
将用户发送到PermisoAttribute

只需更改ActionFilterAttribute,以避免收到这样的用户名

  public class PermisoAttribute : ActionFilterAttribute
        {
            public string username = HttpContext.Current.User.Identity.Name; // { get; set; }
            public string Program { get; set; }
            public string Module { get; set; }

            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);

                if (!permisos(this.username, this.Program, this.Module))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                    {
                        controller = "Home",
                        action = "Denegado"
                    }));
                }
            }
        }
使用
HttpContext.Current.user.Identity.name获取用户名
,对于调用PermisoAttribute,只需发送
[Permiso(modulename=“modulename”,Program=“programaname”)]