澄清ASP.NET生命周期事件的顺序
我发现了一篇MSDN文章,这可能是我在网上看到的最有帮助的文章。但它提出了有关身份验证的有趣问题 表单身份验证在管道中很早就显示为“正在执行”。“执行”处理程序,如ASP.NET MVC路由和控制器执行,将在后面显示。但ASP.NET MVC的身份验证故事通常如下所示:澄清ASP.NET生命周期事件的顺序,asp.net,asp.net-mvc-3,events,authentication,iis-7,Asp.net,Asp.net Mvc 3,Events,Authentication,Iis 7,我发现了一篇MSDN文章,这可能是我在网上看到的最有帮助的文章。但它提出了有关身份验证的有趣问题 表单身份验证在管道中很早就显示为“正在执行”。“执行”处理程序,如ASP.NET MVC路由和控制器执行,将在后面显示。但ASP.NET MVC的身份验证故事通常如下所示: public ViewResult Login(LoginModel login) { if (ModelState.IsValid) { if (Membership.ValidateUser(
public ViewResult Login(LoginModel login)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(...)){
FormsAuthentication.SetAuthCookie(...);
}
}
//...
}
上面的代码表明,(表单)身份验证发生在“执行”处理程序阶段,而不是更早的“身份验证”IIS阶段
有人能澄清一下这种表面上的谨慎吗
我自己的猜测是,如果我没有配置成员资格提供程序,IIS“身份验证”阶段将在指定时执行FormsAuthenticate.Authorize(…)。但是,如果我配置自己的成员资格提供程序,那么IIS“身份验证”阶段实际上什么也不做,而是等待“执行”阶段,以便我自己的身份验证代码可以执行
如果我的猜测是正确的,那么如果我配置了自己的成员资格提供程序,这意味着“获取状态”IIS阶段也不会按预期运行:它还不会“看到”会话建立,因为只有在我在MVC控制器内完成身份验证步骤后,会话才会建立。或者,可能与“身份验证”和“获取状态”相关的应用程序事件将“延迟”,并且在我的控制器执行其身份验证代码之前不会引发
是吗?没有?这里发生了两件不同的事情,令人困惑是可以理解的