我有一個MVC應用程序,我有一個用戶類,用戶也可以模擬另一個用戶(僅限管理員用戶)。ASP.NET MVC創建一個模擬用戶
所以我有下面的代碼驗證請求並實例化我的User類的版本。
然後它會嘗試從Session對象中獲取模擬用戶,但Session不能在global.asax中的此方法中使用。
希望這是有道理的。
我該怎麼辦?
我的問題我猜是在global.asax方法的哪一點你可以訪問每個請求的Session對象?
protected void Application_OnAuthenticateRequest(object sender, EventArgs e)
{
IMylesterService service = ObjectFactory.GetInstance<IMylesterService>();
if (Context.User != null)
{
if (Context.User.Identity.IsAuthenticated)
{
User user = service.GetUser(Context.User.Identity.Name);
if (user == null)
throw new ApplicationException("Context.user.Identity.name is not a recognized user");
User impersonatedUser = (User)this.Session["ImpersonatedUser"];
if (impersonatedUser == null)
user.ImpersonatedUser = user;
else
user.ImpersonatedUser = impersonatedUser;
System.Threading.Thread.CurrentPrincipal = Context.User = user;
return;
}
}
User guest = service.GetGuestUser();
guest.ImpersonatedUser = guest;
System.Threading.Thread.CurrentPrincipal = Context.User = guest;
}
最近我一直有這個確切的問題,並希望有人會參加。我能夠開始工作的唯一的事情就是使用OnSessionStart,但是如果你沒有通過身份驗證時,你想念你機會。我正在移植一個ASP.NET應用程序,其中在共享基本ASPX中運行的某些會話代碼現在需要去其他地方... – 2010-03-30 04:07:36