1

试图将匿名用户限制在 login.aspx、register.aspx 和 Site.css 文件中,并通过身份验证以访问整个站点。目前匿名可以访问 login.aspx 和 Site.css 作为样式正确显示。但是,当我单击 register.aspx 链接时,我会被重定向到 login.aspx 页面。

在 web 根目录下我的 web.config 下方。目录结构中没有其他 web.configs。我不知道我是否应该寻找其他任何地方(我知道 WSAT 有时可以保留规则,但不确定是否被根 Web.config 取代)。

只是想登录和注册文件引用母版页这是否也需要明确授权?虽然不会解释为什么登录对匿名有效,但注册却不行。

谢谢你的帮助!安东尼。

<?xml version="1.0"?>

<configuration>
  <connectionStrings>
    <add name="************"
         connectionString="Data Source=**********; Initial Catalog=************; Integrated Security=SSPI; Persist Security Info=False; Trusted_Connection=Yes"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

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

  <location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

  <location path="Site.css">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

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

    <authorization>
      <deny users="?"/>
    </authorization>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="***********" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="**********" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="***********" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
4

2 回答 2

0

此代码将只允许匿名用户:(注意允许后添加的拒绝节点!

<location path="Register.aspx">
    <system.web>
      <authorization>
        <allow users="?"/>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
于 2015-01-06T15:01:53.040 回答
-1

尝试更改路径以包含 ~/Website,与您的表单身份验证登录位置相同。您不需要指定登录页面,默认情况下它允许访问,因为它是您的表单身份验证设置中的 LoginUrl。

  <location path="~/Website/Register.aspx">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

  <location path="~/Website/Login.aspx">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>
于 2013-03-01T09:09:08.017 回答