澄清ASP.NET生命周期事件的序列
我发现了一篇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设置为以后进行处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net dropdownlist – 在db值之前添加空行
- asp.net-mvc – 使用DI和不使用EF实现工作单元
- 将单元测试添加到现有的asp.net Web表单应用程序
- asp.net – Sitecore – 以编程方式清除用户的缓存
- 实体框架 – 带有实体框架的MVC 3和ASP.Net脚手架错误:没有
- asp.net – 我如何使用AJAX来确定用户的会话是否已过期,然后
- ASP.NET身份和移动客户端
- asp.net-mvc – 防止用户没有确认的电子邮件登录ASP.NET MV
- 如何在VBScript中使用最小的分隔符和时区格式化日期时间?
- asp.net-mvc-3 – 被重定向到错误loginUrl – >帐户/登录,而
- asp.net-web-api – 尝试从asp.net web api自主主
- asp.net – 如何编辑web.config以停止提供.NET W
- asp.net-mvc-4 – 如何从ApiController访问HttpC
- asp.net-mvc – 异步操作方法
- asp.net-core – 替换ASP.NET Core 1.0中间件中的
- 子文件夹中忽略ASP.NET web.config授权设置
- 【译】使用Jwt身份认证保护 Asp.Net Core Web Ap
- asp.net – 无法获取IIS的目录
- asp.net – 显示和隐藏转发器中的特定列?
- 如何缓存输出的action方法,返回图像到asp.net mv