我正在开发一个ASP.NET Web窗体应用程序,我在根目录下有一个名为Account
的文件夹。其中主要包含三个ASPX页面:Login.aspx
,ChangePassword.aspx
,ForgotPassword.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
页面,但它没有发生,为什么?
答案 0 :(得分:1)
您一定可以指定一个文件夹作为路径属性 - 尝试删除尾随/如果您将其保留,例如
<location path="account">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
但是,由于您要保护帐户文件夹中的其他页面,因此您需要覆盖匿名用户专用的页面,例如Login.aspx和ResetPassword.aspx。您无法组合多个文件条目。
至于为什么Dashboard.aspx正在重定向,配置中必须有其他内容,你没有在这里发布,这导致了这一点。