2009-12-18 199 views
0

我的表單身份驗證系統正常工作。Asp.Net Forms成功登錄後再次登錄登錄頁面

我發現了一個奇怪的行爲,例如成功登錄後;如果我從默認頁面瀏覽到登錄頁面,我被要求再次登錄。

我假設它應該將我重定向到默認頁面,因爲我已經過身份驗證。

下面是我用的Web.config元素:

<authentication mode="Forms"> 
<forms loginUrl="login.aspx" defaultUrl="default.aspx" />    
</authentication> 
<authorization> 
<deny users="?"/> 
</authorization> 
+0

<認證模式= 「表單」> <形式loginUrl = 「login.aspx的」 defaultUrl =「default.aspx」/> TigerAmit 2009-12-18 19:07:37

回答

3

這是正常行爲。登錄頁面是一個常規的ASP.NET webform。它會顯示任何內容。

您可以將代碼添加到登錄頁面的事件中,以檢查用戶是否已通過身份驗證。然後,您可以通過調用FormsAuthentication.RedirectFromLoginPage方法將它們重定向到默認值,如果這就是您的要求。

+0

假設我有一個photo.aspx頁面。登錄後,我進入photo.aspx頁面,系統將只在我通過身份驗證時才加載照片頁面。 (我不寫額外的代碼來實現此目的) 爲什麼我不應該期望在登錄頁面上有相同的行爲。 即,如果我通過身份驗證(重定向到默認),則加載頁面,否則顯示登錄表單。 – TigerAmit 2009-12-18 20:07:25

+0

@TigerAmit,好吧,讓我試試看...登錄頁面將您重定向到您嘗試訪問的頁面(重定向到該頁面時)(登錄頁面)。如果您沒有重定向到那裏,我不知道該向哪裏發送,所以它只是發回給自己。合理?換句話說,如果你瀏覽登錄和登錄,那麼登錄認爲你想訪問登錄,而巧合的是你已經登錄了,所以除了登錄你以外,登錄無關.--) – 2010-03-01 18:16:44

0

當用戶使用Forms Authentication向Web站點進行身份驗證時,服務器將創建一個cookie。 Cookie的值是加密的表單身份驗證票證。每次嚮應用程序發送請求時,Cookie都會傳遞給服務器,而FormsAuthenticationModule類將對cookie值進行解密並確定用戶是否有效。 我想你的項目web.config中有blow標籤。它

... 
<modules> 
    <remove name="FormsAuthentication" /> 
</modules> 
.... 

如果不除去,檢查machine.config中,它必須有以下標記:

<httpModule> 
    …other modules… 
    <add name="FormsAuthentication" 
     type="System.Web.Security.FormsAuthenticationModule" /> 
    …other modules… 
</httpModule> 
+0

https:// support。 microsoft.com/en-us/kb/910439 – user3084147 2015-09-17 04:41:33