加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

澄清ASP.NET生命周期事件的序列

发布时间:2020-12-16 09:37:42 所属栏目:asp.Net 来源:网络整理
导读:我发现了一篇MSDN文章,它可能是我在 sequence and workings of the IIS integrated pipeline上看到的最有帮助的文章.但它提出了有关身份验证的有趣问题. 表单身份验证在管道中很早就显示为“正在执行”. “执行”处理程序(例如ASP.NET MVC路由和控制器执行)
我发现了一篇MSDN文章,它可能是我在 sequence and workings of the IIS integrated pipeline上看到的最有帮助的文章.但它提出了有关身份验证的有趣问题.

表单身份验证在管道中很早就显示为“正在执行”. “执行”处理程序(例如ASP.NET MVC路由和控制器执行)将在稍后显示.但是,ASP.NET MVC的身份验证故事常常如下所示:

public ViewResult Login(LoginModel login)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(...)){
            FormsAuthentication.SetAuthCookie(...);
        }
    }
    //...
}

上面的代码表明(表单)身份验证发生在“执行”处理程序阶段,而不是早期的“身份验证”IIS阶段.

有人可以澄清这种看似不一致吗?

我自己的猜测是,如果没有我配置成员资格提供者,IIS“身份验证”阶段将执行FormsAuthenticate.Authorize(…).但是,如果我配置自己的成员资格提供程序,那么IIS“身份验证”阶段实际上什么都不做 – 并等待“执行”阶段,以便我自己的身份验证代码可以执行.

如果我的猜测是正确的,那么如果我已经配置了我自己的成员资格提供者,则意味着“获取状态”IIS阶段也将无法按预期运行:它将不会“看到”会话建立,因为会话将不会建立直到我在我的MVC控制器中完成了我的身份验证步骤.或者“Authenticate”和“Acquire State”相关的应用程序事件可能会“暂停”,直到我的控制器执行其身份验证代码才会被提升?

是?没有?

解决方法

这里有两个不同的东西,这是可以理解的混乱.

>正如您所了解的那样,表单身份验证模块确实很早就运行了.但是该模块主要是关于查看表单auth cookie并确定其真实性,如果它是真实的,那么设置正确的身份主体供ASP.NET使用.>您通常在MVC项目中看到的身份验证代码是关于记录用户的,如果凭据是正确的,它会将表单身份验证的cookie设置为以后进行处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读