Asp.net 在虚拟应用程序中忽略窗体身份验证

Asp.net 在虚拟应用程序中忽略窗体身份验证,asp.net,iis,forms-authentication,virtual-directory,Asp.net,Iis,Forms Authentication,Virtual Directory,我有一个管理网站作为一个虚拟应用程序内的另一个网站设置 我希望子目录(虚拟应用程序)的访问者能够使用主父站点上设置的相同表单身份验证来获得凭据 我尝试过各种方法,但都无法成功,包括 从虚拟应用程序web.config中删除所有、、和部分 将相同的、、和节从父应用程序复制到虚拟应用程序web.config 使用虚拟目录而不是虚拟应用程序 但我从来没有得到过证书的奖励 有人知道如何设置吗 谢谢 更新: 现在,通过删除IIS中的应用程序名称(使其成为虚拟目录而不是虚拟应用程序),可以从父级继承权限 但

我有一个管理网站作为一个虚拟应用程序内的另一个网站设置

我希望子目录(虚拟应用程序)的访问者能够使用主父站点上设置的相同表单身份验证来获得凭据

我尝试过各种方法,但都无法成功,包括

从虚拟应用程序web.config中删除所有
部分

将相同的
节从父应用程序复制到虚拟应用程序web.config

使用虚拟目录而不是虚拟应用程序

但我从来没有得到过证书的奖励

有人知道如何设置吗

谢谢

更新:

现在,通过删除IIS中的应用程序名称(使其成为虚拟目录而不是虚拟应用程序),可以从父级继承权限

但是,这会破坏管理站点中的所有路径

e、 我得到以下错误

文件“/Site.master”不存在

那么,我是否应该使用虚拟目录(它似乎从父目录继承身份验证)

或虚拟应用程序(当前不从父级继承auth,但具有正确的相对路径)

这是父配置

<membership defaultProvider="SqlServerMembershipProvider">
            <providers>
                <add connectionStringName="xxxxxxxx" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="SqlServerMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </membership>
        <roleManager enabled="true" defaultProvider="SqlServerRoleProvider">
            <providers>
                <add connectionStringName="xxxxxxx" applicationName="/" name="SqlServerRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </roleManager>

        <authentication mode="Forms">
            <forms name=".EPiServerLogin" loginUrl="login.aspx" timeout="120"/>
        </authentication>
        <authorization>
            <deny users="?"/>
        </authorization>

你过得怎么样

另外,我假设您尚未在父站点中进行身份验证

在admin子目录中,您的web.config中应该有如下内容(显然,您可能还有更多信息):


回复评论

您的身份验证/授权是否在父站点中工作


您是否可以编辑您的问题,将您尝试过的(经过消毒的)web.config部分包括在内,这样我们就可以查看是否有明显的遗漏-例如,如果您使用角色锁定管理区域,您已经启用了它(
,默认值为
false
)。

我需要使用单点登录解决方案,如下所述


主要的一点是,每个站点都需要对cookie值使用相同的加密密钥。因此,需要将machineKey元素添加到单点登录所涉及的每个站点中,我们会执行您经常尝试执行的操作

我们这样做:根级别是一个虚拟应用程序,它包含master web.config和global.ascx。我们在里面有一个普通的文件夹“Admin”。其中,我们有一个小web.config,它只包含


是的,我尝试过授权部分和未授权部分。允许所有annonymouse,拒绝所有annonymous,甚至拒绝所有使用(*),但我从未收到提示输入凭据,是的,我还没有在父站点中配置。我可以访问该站点并重定向到登录页面,但当我转到/admin时,我可以查看该站点,而无需提示提供凭据。我的意思是在最后的评论中说“已验证”,而不是“已配置”。是的,它只有两个站点。父站点(主要顶级站点)和管理员(子站点)现在已经分类了-我需要按照我在上面的一个回复中发布的单点登录文章中的建议去做,我通常也提到machinekey-我猜我只是假设它在主应用程序下面,它会共享它,很高兴知道,以备将来参考:S
<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>
      <allow roles="Admin" />
      <deny users="*" />