【问题标题】:Basic authentication in asp.net avoided if runAllManagedModulesForAllRequests="True"如果 runAllManagedModulesForAllRequests="True" 则避免在 asp.net 中进行基本身份验证
【发布时间】:2012-04-27 01:45:39
【问题描述】:

我们有一个模块可以内部重定向到真正的 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 的模块部分添加基本的身份验证模块(怎么做)?

提前致谢。 干杯

【问题讨论】:

    标签: asp.net caching httpmodule basic-authentication


    【解决方案1】:

    在寻找相关问题的答案时,我遇到了这篇文章:

    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 的建议可能是有根据的。

    【讨论】:

    • (没有必要对这个答案进行投票,因为我自己没有创建答案。它只是为 OP 自行提供的接受的答案添加了一些支持/上下文。)
    【解决方案2】:

    由于 httpmodule 拦截每个请求,服务器无法为静态文件、动态文件和其他安全身份验证映射适当的处理程序。

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 2022-06-10
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2017-09-18
      • 2017-06-13
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多