【问题标题】:How to Configure Forms Authentication for a Folder of my Web Application?如何为我的 Web 应用程序的文件夹配置表单身份验证?
【发布时间】:2011-10-13 10:15:14
【问题描述】:

我有一个 asp.net 应用程序,根目录中有一个 web.config 文件,并且默认使用 Windows 身份验证。

我有一个应该具有表单身份验证的 Admin 文件夹。为此,我在 Admin 文件夹中添加了一个新的 web.config 文件,如下所示:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authentication mode="Forms" >      
      <forms loginUrl="~/Admin/Login.aspx" name=".ASPXFORMSAUTH" >
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>   
  </system.web>
</configuration>

现在当我在 Admin 文件夹中运行一个页面时,它给了我以下错误:

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.

如何只为 Admin 文件夹内的页面配置表单身份验证,而将其他页面留给默认的 Windows 身份验证?

谢谢

【问题讨论】:

  • 你确定 admin 是一个应用程序而不是一个虚拟文件夹吗?
  • 你的意思是关于 IIS 设置? Admin 不是应用程序,也不是虚拟文件夹。它只是根应用程序中的一个普通文件夹。

标签: c# asp.net windows authentication forms-authentication


【解决方案1】:

我认为你需要这样做

在您的管理员文件夹中web.config

  <location path="Register.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>

</configuration>

在你的根目录web.config

<system.web>
<authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
</system.web>

无论如何这可能会帮助你Control Authorization Permissions in an ASP.NET Application

【讨论】:

  • 谢谢;这应该写在根 web.config 还是 Admin 文件夹内的 web.config 中?我几乎都尝试了,但都没有成功。
  • 这应该在您的管理员文件夹中。 部分应该在根目录
  • 不确定你的意思;你能编辑你的答案吗?应该在哪个 web.config 中设置?
  • 嗯,只有 Admin 文件夹应该使用 Forms 身份验证。其余的,应该使用默认设置的 Windows 身份验证。但是您的代码使一切都使用表单身份验证。请重新阅读问题。
  • 在一个asp.net应用程序中可能只能使用一种身份验证模式?
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2010-11-10
  • 2013-04-06
相关资源
最近更新 更多