Asp.net mvc 4 HttpApplication.User(在Global.asax中)和Controller.User(在MVC控制器中)之间的差异

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,这不是我们需要的 因此: 为什么这些例

我们正在使用第三方身份验证机制(通过)。作为其中的一部分,我们需要提取一些关于登录用户的数据

我们通过从Global.asax访问
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