我们正在使用第三方身份验证机制(CAS,通过.NET CAS Client)。作为其中的一部分,我们需要提取有关登录用户的一些数据。
我们通过从Global.asax(我们的场景中的HttpApplication.User
)访问DotNetCasClient.Security.CasPrincipal
实例来实现这一目标。但是,我们需要它来自控制器。
问题在于,从控制器我们可以访问Controller.User
,其实例是普通的System.Web.Security.RolePrincipal
,这不是我们需要的。
所以:
HttpApplication.User
?答案 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 ???
......