如何使用ASP.NET对纯HTML页面进行表单身份验证?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

我在IIS7中使用表单身份验证来密码保护开发站点,但是当站点仅包含静态HTML文件+ login.aspx + web.config 时,身份验证似乎被绕过。

当我将这些文件重命名为.aspx时,系统会提示登录表单,我没有做任何事情。我有一个非常简单的登录脚本,它应该只是重定向到index.html之后。

有什么建议么?总而言之,整个网站使用HTML(现在)并需要密码保护。

<authentication mode="Forms">
  <forms name="appNameAuth" path="/" loginUrl="~/login.aspx" defaultUrl="index.html" protection="All" timeout="525600">
    <credentials passwordFormat="Clear">
      <user name="[user]" password="[password]" />
    </credentials>
  </forms>
</authentication>
<authorization>
  <deny users="?" />
</authorization>
提问于
用户回答回答于

要通过表单认证来锁定HTML文件,需要让它们由ASP.NET提供服务。可以通过您需要的扩展名(例如.html,.htm等)与aspnet_isapi.dll关联来在IIS中执行此操作。

Onces ASP.NET正在为这些文件提供服务,可以像任何aspx页面一样为它们指定权限。

有关更多信息,请参阅MSDN

默认情况下,IIS会自行处理静态内容(如HTML页面,CSS和图像文件),并且只有在请求扩展名为.aspx,.asmx或.ashx的页面时,才会将请求转交给ASP.NET运行时。 但是,IIS 7允许集成IIS和ASP.NET管道。通过一些配置设置,可以设置IIS 7为所有请求调用FormsAuthenticationModule。此外,在IIS 7中,可以为任何类型的文件定义URL授权规则。有关更多信息,请参阅IIS6和IIS7安全性之间的更改,Web平台安全性和了解IIS7 URL授权。 长话短说,在IIS 7以前的版本中,只能使用表单身份验证来保护由ASP.NET运行时处理的资源。同样,URL授权规则仅适用于由ASP.NET运行时处理的资源。但是对于IIS 7,可以将FormsAuthenticationModule和UrlAuthorizationModule集成到IIS的HTTP管道中,从而将此功能扩展到所有请求。

用户回答回答于

在IIS7中,如果要在表单身份验证下保护* .html或* .htm文件(或其他非.net扩展名),请将以下行添加到web.config中:

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

<system.webServer>
     <handlers>
         <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG"   type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
         <add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
     </handlers>
</system.webServer>

扫码关注云+社区

领取腾讯云代金券