• 在ASP.NET中配置 html文件的访问验证


    Asp.NET 中,运用 其自身提供的访问验证功能(表单验证、Passport 验证、Windows 验证),并不会对静态文件(如 html、图像文件、文本文件等)执行 访问限定 ,即使这些文件置于须要 验证后才能访问的文件夹下,匿名用户仍然可以访问到这些文件。这是因为静态文件默认是由 IIS 处理,IIS 在接收到对这些文件的请求后,并不会转交给 ASP.NET 处理,所以,在 ASP.NET 中的权限验证失去了作用。换句话说,这些文件不在 ASP.NET 的管辖范围内。

    那么,如何 将这些文件置于 ASP.NET 的管辖范围内呢?

    以 html 文件为例,最基本 的办法是将 html 文件的后缀改为 aspx,这个办法很基本 ,也算实用,但并不正规。

    另一种要领 是针对 IIS 执行 配置 ,让 IIS 将 html 文件的处理权转交给 ASP.NET。配置 如下:

    (1) 打开 IIS,找到须要 配置 的 ASP.NET 运用 程序,打开属性对话框。

    (2) 在“虚拟目录”选项卡中有一个“运用 程序配置”,点击这里面的“配置”按钮,弹出新的对话框。

    (3) 在“对应”选项卡中,点击“新增”按钮,添加 .htm 的后缀与处理程序的对应联系 ,具体配置 可参照 .aspx 的配置 。

    配置 好之后,再次访问位于须要 验证的目录下的 html 文件,会转到登录页面提示用户登录,说明访问验证已经生效。但到此仍未完成,因为登录后会发觉 ,htm 文件不正确 。这涉及到 HttpHandler 的疑问 ,因为对于 ASP.NET 来说,这相当于启用了一种新的文件类型,但却没有相应的处理程序。所以,还须要 改动 web.config 的配置 ,注册一个新的处理程序,对于 html 文件,我们可以运用 aspx 文件的处理程序,所以配置 如下:

    <system.web>   ...  

    <httpHandlers>     ...    

    <!-- 添加 后缀为 htm 文件的处理程序,这里运用 aspx 文件的处理程序 -->    

    <add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory"/>   </httpHandlers>   ...

    </system.web>

    再次访问,这次是编译不正确 ,因为缺少对 htm 文件的相应编译程序,再修改 web.config:

    <system.web>

    <compilation>     ...    

    <!-- 配置 后缀为 htm 的文件的编译程序,这里运用 aspx 文件的编译程序 -->    

    <buildProviders>      

    <add extension=".htm" type="System.Web.Compilation.PageBuildProvider"/>     </buildProviders>  

    </compilation>   ...

    </system.web>

    这回再访问这个 html 文件,它正如我们期望的一样,须要 执行 身份验证,并且也可以 够正常显示。

    其实这个疑问 的核心在于对 HttpHandler 的理解。

    另外,据说在 IIS 7 中,只要把运用 程序放在模式为 Integrated 的运用 程序池中,就可以处理 这个疑问 。

  • 相关阅读:
    高并发编程之基础概念
    使用JAXB实现Bean与Xml相互转换
    python语法(五)—函数
    2018年终总结
    python语法(四)— 文件操作
    excel开发
    spring 常用注解,@primary注解
    spring中InitializingBean和@Bean的初始化,bean初始化
    @PostConstruct 注解
    LocalDateTime java8
  • 原文地址:https://www.cnblogs.com/lidj/p/3429668.html
Copyright © 2020-2023  润新知