2013-11-20 47 views
1

我們使用的是第三方認證機制(CAS,通過.NET CAS Client)。作爲其中的一部分,我們需要提取一些關於登錄用戶的數據。HttpApplication.User(在Global.asax中)和Controller.User(在MVC控制器中)之間的區別

我們通過訪問Global.asax中的HttpApplication.User實例(在我們的場景中爲DotNetCasClient.Security.CasPrincipal)實現了此目的。但是,我們需要它從控制器上工作。

問題是,從一個控制器我們可以訪問Controller.User,它的實例是一個普通的舊的System.Web.Security.RolePrincipal,這不是我們所需要的。

所以:

  • 爲什麼這些情況不一樣呢?
  • 是否有可能從控制器中獲取HttpApplication.User

回答

1

我知道一定是更好的方法來做到這一點 - 但在此期間,我會建議使用HttpContext.Current.Items["YourKey"],然後訪問你的控制器Context.Item

請參閱MSDN中的HttpContext.Items瞭解更多信息。

0

您是否試圖從控制器繼承並覆蓋OnAuthorization

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

不幸的是,該用戶也是'System.Web.Security.RolePrincipal'。 –

相關問題