表单身份验证的麻烦

时间:2012-12-11 12:26:27

标签: asp.net forms-authentication webforms

我正在开发一个ASP.NET Web窗体应用程序,我在根目录下有一个名为Account的文件夹。其中主要包含三个ASPX页面:Login.aspxChangePassword.aspxForgotPassword.aspx

我已使用自定义成员资格提供程序配置了表单身份验证。

的web.config

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" slidingExpiration="true" timeout="2880" path="/" protection="All" />
</authentication>

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear/>

    <add name="CustomMembershipProvider" 
         type="App_Code.CustomMembershipProvider, Portal.Web" 
         connectionStringName="PortalConnectionString"
         applicationName="/" />
  </providers>
</membership>

如果我尝试访问除Account以外的Login.aspx文件夹中的页面,我一直在重定向到Login.aspx,而我目前正在避免对其他两个页面进行表单身份验证下面,

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

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

我可以将它们组合起来而不是指定上面的单个页面吗?我尝试在Account属性中指定文件夹名称path,但这不起作用。

接下来就是我在根目录中有另一个名为Dashboard.aspx的页面,每当我直接访问它时,我以为我会被重定向到Account/Login.aspx页面,但它没有发生,为什么?

1 个答案:

答案 0 :(得分:1)

您一定可以指定一个文件夹作为路径属性 - 尝试删除尾随/如果您将其保留,例如

 <location path="account">
    <system.web>
      <authorization>
        <deny users="?" />
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

但是,由于您要保护帐户文件夹中的其他页面,因此您需要覆盖匿名用户专用的页面,例如Login.aspx和ResetPassword.aspx。您无法组合多个文件条目。

至于为什么Dashboard.aspx正在重定向,配置中必须有其他内容,你没有在这里发布,这导致了这一点。