作为那些从事过这样一个项目的人,您可能知道这个站点:
使用.NET开发模块
在本文中,Mike创建了一篇关于如何为IIS7创建自己的安全身份验证扩展的非常好的文章。
我拿了这个,根据自己的需要修改了一下。我获取基本的auth凭据,并调用外部web服务从不同的活动目录域对用户进行身份验证。
到目前为止,这在原则上是可行的。
调用web服务需要一些时间,每个请求、站点、资源(图像、样式表、javascript文件等)都需要一些时间。使IIS7调用模块并再次进行身份验证。
我不知道IIS7是如何处理这个模块的,所以我决定创建一个基于sql表的安全令牌,使用10分钟的生命周期。因此,现在我的代码检查该令牌是否可用,并授予访问权,如果没有,则调用web服务再次进行身份验证。
我开发了所有的东西,一切都很好。在生产过程中,我遇到了更糟糕的超时,发现我的sql连接是问题所在。连接池重载。我用一个糟糕的解决方法修复了这个问题,将池大小设置为非常大的数目。
现在我的问题是:
有人知道这个模块是否会以任何方式留在内存中,这样我就可以在内存应用程序池范围内存储令牌了吗?这样做的目的是在应用程序运行时将令牌存储在内存中。但是,我找不到任何信息来帮助我了解如何在IIS7中处理模块,以及我的想法是否解决了这个问题。
发布于 2011-01-08 16:10:01
您不会将模块本身保存在内存中,但常见的是使用加密的cookie或会话来维护creds。听起来你好像把问题混为一谈了。您的模块听起来像是可以(而且应该)由自定义成员资格提供程序( nto )处理。
假设(基于您的帖子)您在web上获取某人的用户名和密码(表面上来自web表单),您应该在ASP.NET中使用表单身份验证提供程序,然后实现一个customMembership提供程序来执行实际的creds检查。然后Forms Atuh提供者可以处理维护应用程序和用户浏览器之间的auth令牌。
https://stackoverflow.com/questions/4634746
复制相似问题