我有一个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