如何在asp.net mvc的actioninvoke中使用公共属性?
问题描述:
我有这样的代码如何在asp.net mvc的actioninvoke中使用公共属性?
public ActionResult Index()
{
if (CurrentUser != null)
{
UserManager.User usr = (User.User)CurrentUser;
}
}
我已经做了AdminController : TestController
现在是什么,我用它来检查actioninvoke访问此currentUser的方式,用户是管理员或不
public class AdminAuthorize : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
}
他们无论如何都在这个调用者中使用currentUser变量。
答
您应该能够从filterContext的Controller属性中访问当前控制器实例。
public class AdminAuthorize : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
var currentUser = ((AdminController)filterContext.Controller).CurrentUser;
// do what you need with currentUser
}
}
答
您是不是更好地从HttpContext.Current.User.Identity.Name
抓住当前用户?所以你可以对所有的控制器使用这个ActionFilter?