2012-12-11 137 views
0

我正在研究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> 

而不是spe像上面的個別頁面可以合併它們嗎?我嘗試在path屬性中指定文件夾名稱Account,但這不起作用。

接下來的事情我已經叫根Dashboard.aspx另一頁,每當我直接訪問它,我想我會被重定向到Account/Login.aspx頁,但它沒有發生,爲什麼呢?

回答

1

您絕對可以指定一個文件夾作爲路徑屬性 - 嘗試刪除尾部/如果您保留它,例如,

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

但是,因爲要保護帳戶文件夾內的其他頁面,你需要重寫的專門供匿名用戶,如爲Login.aspx和ResetPassword.aspx頁面。您不能組合多個文件條目。至於爲什麼Dashboard.aspx重定向,在配置中一定有其他東西,你沒有在這裏發佈,這是造成這種情況。