表单身份验证到底存在于 Http 管道中的什么位置?
表单身份验证到底存在于 Http 管道中的什么位置?
Where exactly does Forms Authentication exist in the Http Pipeline?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
表单身份验证到底存在于 Http 管道中的什么位置?
Where exactly does Forms Authentication exist in the Http Pipeline?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这是由 HTTP 模块 System.Web.Security.FormsAuthenticationModule 处理的。如果您查看系统范围的 web.config 文件部分。站点特定的 web.config 文件将继承该文件中的配置。
c:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config
,您可以看到在 < code>对于每个请求,该模块都会查找身份验证 cookie。如果不存在,请求将重定向到登录页面。成功登录后,身份验证 cookie 将发送回浏览器。然后,在后续请求中,浏览器将发送 cookie,该 cookie 将由模块进行验证,然后照常处理请求。
This is handled by an HTTP module, System.Web.Security.FormsAuthenticationModule. If you look at the system-wide web.config file,
c:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config
, you can see where it's mentioned in the<httpModules>
section. The site-specific web.config file will inherit the configuration in that file.On each request, the module will look for an authentication cookie. If it's not present, the request is redirected to the login page. On a successful login, an authentication cookie is sent back to the browser. Then on subsequent requests, the browser will send the cookie, which will be validated by the module, and then the request is handled as usual.
我想我应该先想到这一点,但直到我看到@Carl Raymond 的答案,我才意识到我可以在反射器中将其打开。因此,为了回答我自己的问题,
OnEnter
调用私有方法OnAuthenticate
,该方法传入应用程序上下文,这就是它验证/写出表单身份验证票证的地方。在 OnExit 中,它会检查 Http 状态错误代码 401 的响应,如果找到它,就会重定向到登录 URL。
Guess I should've thought of this first but it didn't dawn on me until I saw the answer from @Carl Raymond that I can just crack it open in reflector. So to answer my own question
OnEnter
calls the private methodOnAuthenticate
which passes in the application context and this is where it validates/writes out the Form Auth tickets.In
OnExit
it checks the response for a Http Status Error Code 401 and if it finds it, that's when it redirects to the Login Url.