当前位置: 首页 > 编程笔记 >

ASP.NET中HTML页面的访问验证设置方法

子车凯泽
2023-03-14
本文向大家介绍ASP.NET中HTML页面的访问验证设置方法,包括了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 的理解。另外,据说在 IIS7 中,只要把应用程序放在模式为Integrated 的应用程序池中,就可以解决这个问题。

如果不是特殊要求或者非要使用HTML静态页面时,个人觉得还是把html转换成aspx比较简单。客户部署不需要作过多的配置,有些客户就很烦部署系统要作配置,所以还是简单为好。

 类似资料:
  • 问题内容: 我有一个简单的操作方法,它返回一些json。它在ajax.example.com上运行。我需要从另一个网站someothersite.com访问此网站。 如果我尝试调用它,我会得到预期的…: 我知道有两种方法可以解决此问题:JSONP和创建自定义HttpHandler来设置标头。 有没有更简单的方法? 简单的动作是否不可能定义允许的来源列表-还是简单地允许所有人?也许是动作筛选器? 最

  • 本文向大家介绍Asp.net webForm设置允许表单提交Html的方法,包括了Asp.net webForm设置允许表单提交Html的方法的使用技巧和注意事项,需要的朋友参考一下 1、在表单需要提交Html的页面头部加入  ValidateRequest="false" 2、webConfig 的  <system.web> 节点下配置 以上这篇Asp.net webForm设置允许表单提交H

  • 本文向大家介绍Python中设置变量访问权限的方法,包括了Python中设置变量访问权限的方法的使用技巧和注意事项,需要的朋友参考一下 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: 如果要让内部属性不被外部访问,可以把属性

  • 我已经为我的API创建了一个身份验证过滤器,它将验证auth头,以确保用户可以访问API。然而,我也有权限设置为endpoint,将允许用户读取,但不能写入等。我希望能够在这里执行此身份验证,如果失败,我可以终止请求。为此,我需要知道控制器和动作值。我可以访问url字符串,但我不愿意自己解析它,除非我必须这样做。 我尝试在AuthenticateAsync方法内部使用以下代码 这不起作用,因为AP

  • 本文向大家介绍asp.net简单生成验证码的方法,包括了asp.net简单生成验证码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net简单生成验证码的方法。分享给大家供大家参考,具体如下: 1.新建一个一般处理程序 2.前台代码 希望本文所述对大家asp.net程序设计有所帮助。

  • 你可能知道什么是Android Shared Preferences。可以通过Android框架简单存储的一系列key和value对。这些preferences与SDK的一部分融为一体,使得任务变得更加容易。而且从Android 6.0(Marshmallow),shared preferences可以自动被云存储,所以当一个用户在一个新的设备上面恢复App的时候,它们的preferences也会