HttpApplication.User(在Global.asax中)和Controller.User(在MVC控制器中)之间的区别

时间:2013-11-20 15:17:28

标签: asp.net-mvc-4 authentication cas

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

我们通过从Global.asax(我们的场景中的HttpApplication.User)访问DotNetCasClient.Security.CasPrincipal实例来实现这一目标。但是,我们需要它来自控制器。

问题在于,从控制器我们可以访问Controller.User,其实例是普通的System.Web.Security.RolePrincipal,这不是我们需要的。

所以:

  • 为什么这些实例不一样?
  • 是否可以从控制器中获取HttpApplication.User

2 个答案:

答案 0 :(得分:1)

我知道必须有更好的方法来做到这一点 - 但与此同时,我建议使用HttpContext.Current.Items["YourKey"],然后访问控制器中的Context.Item

有关详细信息,请参阅MSDN中的HttpContext.Items

答案 1 :(得分:0)

您是否尝试从Controller继承并覆盖OnAuthorization

protected override void OnAuthorization(AuthorizationContext filterContext)
{
    filterContext.HttpContext.ApplicationInstance.User   // CasPrincipal ???
......