web.config 中的多个/不同身份验证设置

Posted

技术标签:

【中文标题】web.config 中的多个/不同身份验证设置【英文标题】:Multiple/Different authentication settings in web.config 【发布时间】:2010-09-24 01:06:09 【问题描述】:

我将如何为我的网络应用程序的不同部分设置不同的身份验证标签?说我有:

/
/folder1/
/folder2/

是否可以为每个文件夹指定不同的<authentication/> 标签?

我希望文件夹 1 使用 Windows 身份验证,但文件夹 2 使用表单身份验证。

我尝试在<location/> 标记中进行操作,但看起来您不能在<location/> 标记中使用<authentication/> 标记,至少不能通过内置网络服务器的VS 2008。

这个错误说 - 错误 3 使用注册为 allowDefinition='MachineToApplication' 的部分超出应用程序级别是错误的。此错误可能是由未在 IIS 中配置为应用程序的虚拟目录引起的。

<location path="/folder1">
    <system.web>
      <authentication mode="Forms" />
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

【问题讨论】:

【参考方案1】:

您只能在***web.config 上拥有&lt;authentication /&gt;。您可能必须创建多个应用程序。即您可以在一个应用程序中创建一个应用程序,并在每个应用程序中使用不同的身份验证模式。

【讨论】:

【参考方案2】:

我认为您可以将folder1上的表单身份验证权限设置为

<allow users="*" />

然后通过设置文件夹的windows权限来控制windows访问。

我没有尝试过,但我想不出为什么它不起作用。

【讨论】:

【参考方案3】:

这些设置仅在 ASP.Net 应用程序的根级别有效。要在子文件夹中使用不同的设置,您需要进入 IIS 并将该子文件夹设置为新应用程序。

完成此操作后,该文件夹将在 IIs 管理器中显示不同的图标。在您的子文件夹中,创建一个新的 web.config 文件并在其中添加新的身份验证设置。

更多信息请访问Creating Applications。

【讨论】:

对,但是好像在VS2008调试器中,它不能把这些子文件夹当作应用程序文件夹,我需要通过推送到IIS服务器来测试 如果您使用的是内置的 Visual Studio Web 服务器,那么是的,您是正确的,您需要在 IIS 中设置应用程序。

以上是关于web.config 中的多个/不同身份验证设置的主要内容,如果未能解决你的问题,请参考以下文章

允许对 web.config 中的单个文件夹进行匿名身份验证?

asp.net web.config中基于多个角色的文件夹授权

Asp.net 形成身份验证 cookie 不遵守 IIS7 的超时

关于 web.config 中的模拟、身份验证和授权的困惑

web.config 中的 loginURL 在基于虚拟目录的页面中形成身份验证

使用用户/密码将基本身份验证添加到 web.config 的最简单方法