c#-4.0 – 在我的基本控制器构造函数上获取用户标识
发布时间:2020-12-15 18:22:36 所属栏目:百科 来源:网络整理
导读:我的ASP.NET MVC4网站上有一个基本控制器,它有一个简单的构造函数: public class BaseController : Controller{ protected MyClass Foo { get; set; } public BaseController() { if (User.Identity.IsAuthenticated)) { Foo = new MyClass(); } }} 但是我
我的ASP.NET MVC4网站上有一个基本控制器,它有一个简单的构造函数:
public class BaseController : Controller { protected MyClass Foo { get; set; } public BaseController() { if (User.Identity.IsAuthenticated)) { Foo = new MyClass(); } } } 但是我无法在这里访问用户.它是空的.但是在我继承的控制器上它很好. 谢谢 解决方法
控制器实例化将在授权发生之前进行.即使您的MVC应用程序多次调用RenderAction()并最终创建了五个不同的控制器,这些五个控制器也将在任何
OnAuthorization发生之前创建.
处理这些情况的最佳方法是使用Action Filters. Authorize Attribute提前解雇,可能适合您的情况. 首先,让我们创建一个AuthorizationFilter. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class MyClassAuthorizationAttribute : Attribute,IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { if (filterContext.HttpContext.User.Identity.IsAuthenticated) { filterContext.Controller.ViewData["MyClassInstance"] = new MyClass(); } } } 现在让我们更新我们的控制器 [MyClassAuthorization] public class BaseController : Controller { protected MyClass Foo { get { return (MyClass)ViewData["MyClassInstance"]; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容