IIS 级别的身份验证
这篇文章讨论了在 IIS 中可以进行的身份验证过程。
引言
这篇文章基本上解释了如何在 IIS 级别进行身份验证。
背景
这一切源于我面试了一个经验相当丰富的家伙,我注意到许多有经验的人缺乏所谓的“基础”。 我记得问他这个问题:“我想在请求到达页面之前就验证用户是否为有效用户,我不想使用 Forms 或 Windows 身份验证”。 我得到的答案很糟糕——候选人回答说可以在 page_load
或 page_init
中进行检查。
解释
在我的文章 http://bloggingbunk.com/2011/07/net-in-depth-understanding-request-life-cycle/ 中,我讨论了两个主要元素
HttpModule
HttpHandler
对于任何请求,IIS 首先调用 HttpModule
,然后是 HttpHandler
,然后是 Page
,最后再次调用 HttpModule
。
在你的项目中,在设计 asp 页面时,创建一个继承 iHttpModule
的类。 这个类将实现 HttpModule
的所有方法。 现在在 BeginRequest
中放置你的身份验证代码。 例如,假设你的项目将重要数据存储在 cookie 中;将 cookie 信息与请求一起发送。下图描述了你的请求将如何获取页面。管道代表 HttpModule
和 HttpHandler
。

现在,你看到的这些检查可以是调用数据库或任何身份验证系统,甚至可以调用访问控制策略例程。
由于 HttpModules
非常方便,我们可以在请求到达页面之前做任何事情。
这说明了,在页面生命周期完成之后,HttpModule
也可以帮助我们在 EndRequest
下进行任何操作;它可以是响应的检查或任何其他操作。
如果你可以利用 HttpModule
的 BeginRequest
、AuthoriseRequest
和 EndRequest
以及 HttpHandler
的 ProcessRequest
,你可以拥有更多的安全性。
结论
基本上,总结一下——这种方法优雅地承载了我们的管道模式。 希望你理解了 IIS 级别的身份验证。 请将你的问题作为评论提出,我会回复。