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”)]