Asp.net mvc 4 HttpApplication.User(在Global.asax中)和Controller.User(在MVC控制器中)之间的差异
我们正在使用第三方身份验证机制(通过)。作为其中的一部分,我们需要提取一些关于登录用户的数据 我们通过从Global.asax访问Asp.net mvc 4 HttpApplication.User(在Global.asax中)和Controller.User(在MVC控制器中)之间的差异,asp.net-mvc-4,authentication,cas,Asp.net Mvc 4,Authentication,Cas,我们正在使用第三方身份验证机制(通过)。作为其中的一部分,我们需要提取一些关于登录用户的数据 我们通过从Global.asax访问HttpApplication.User实例(在我们的场景中是DotNetCasClient.Security.CasPrincipal)实现了这一点。但是,我们需要它从控制器工作 问题是,我们可以从控制器访问controller.User,其实例是一个普通的旧System.Web.Security.RolePrincipal,这不是我们需要的 因此: 为什么这些例
HttpApplication.User
实例(在我们的场景中是DotNetCasClient.Security.CasPrincipal
)实现了这一点。但是,我们需要它从控制器工作
问题是,我们可以从控制器访问controller.User
,其实例是一个普通的旧System.Web.Security.RolePrincipal
,这不是我们需要的
因此:
- 为什么这些例子不一样
- 是否可以从控制器中获取
HttpApplication.User
protected override void OnAuthorization(AuthorizationContext filterContext)
{
filterContext.HttpContext.ApplicationInstance.User // CasPrincipal ???
......
您是否尝试从控制器继承并重写授权
protected override void OnAuthorization(AuthorizationContext filterContext)
{
filterContext.HttpContext.ApplicationInstance.User // CasPrincipal ???
......
我知道必须有更好的方法来做到这一点——但同时,我建议使用
HttpContext.Current.Items[“YourKey”]
,然后访问控制器中的Context.Item
有关更多信息,请参见MSDN。我知道必须有更好的方法来实现这一点——但同时,我建议使用
HttpContext.Current.Items[“YourKey”]
然后访问控制器中的Context.Item
有关更多信息,请参见MSDN。遗憾的是,没有;该用户也是一个
System.Web.Security.RolePrincipal
。遗憾的是,不是;该用户也是System.Web.Security.RolePrincipal
。