我们有一个模块可以对内部重定向到真正的aspx页面。他还负责直接向客户端提供缓存/压缩的HTML / txt / cs / js输出。
以下是模块部分的web.config外观:
<modules runAllManagedModulesForAllRequests="True">
<remove name="RequestInterceptor" />
<add type="Lib.Request.RequestInterceptor" name="RequestInterceptor" />
<remove name="Session" />
<add type="System.Web.SessionState.SessionStateModule" name="Session" />
</modules>
IIS7上启用了基本身份验证。当第一个访问者访问站点登录弹出窗口并且他被正确认证,然后他访问的页面被缓存。 当下一个访问者出现身份验证弹出窗口没有显示时,除非他访问前一个访问者未访问过的页面(未缓存的页面)。缓存过期后,身份验证将再次起作用,直到页面内容被缓存为止,等等。
有没有办法强制每位访问者进行身份验证?也许我们需要在web.config的模块部分添加基本认证模块(怎么做)?
提前致谢。 干杯
答案 0 :(得分:2)
在搜索相关问题的答案时,我发现了这篇文章:
Don't use runAllManagedModulesForAllRequests="true" when getting your MVC routing to work
制作你的模块部分似乎是一种常见的建议 web.config说。在 事实上,解决路由问题是一件非常激烈的事情 并具有可能导致错误的全局影响。 ......这很高兴 建议修复可能会导致其他问题。这些问题都来自于 使所有注册的HTTP模块在每个请求上运行的形式, 不只是托管请求(例如.aspx)。这意味着模块将继续运行 曾经.jpg .gif .css .html .pdf等。
而且,虽然我没有在我的WCF REST服务中使用MVC,但它确实解决了我的(其他)问题,并且可能需要这个针对runAllManagedModulesForAllRequests
不当或过度使用的建议。
答案 1 :(得分:1)
因为httpmodule拦截了每个请求,所以服务器无法为静态文件,动态文件以及其他安全的身份验证映射适当的处理程序。