2011-12-01 29 views
4

這裏是我的web.configasp.net窗體身份驗證的變化.NET 2 .NET4

<authentication mode="Forms"> 
    <forms name="security" path="/" loginUrl="default.aspx" protection="All" timeout="360" /> 
</authentication> 

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

我的窗體身份驗證部分爲變更後因故.NET 4作爲我的目標,人們不得不登錄現在我的表單身份驗證重定向之前兩次。有沒有其他人遇到過這個問題。

此外,我的登錄是在主頁上,所以我嘗試了下面的想法,我只需要公開我的登錄頁面,但它沒有奏效。任何人都有這個問題?

而且我注意到,當我訪問我的主頁我得到這個網址的Default.aspx?RETURNURL =%2F,如果我刪除RETURNURL參數,它的工作原理,然後登錄第一次。但是,如果ReturnUrl處於查詢字符串中,我必須在第一次訪問該網站時登錄兩次。

的Default.aspx?RETURNURL =%2F

所以我在我的位置添加頁面,公衆訪問,這並沒有幫助..

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

+0

通常,您不需要爲Forms Auth標記中指定的登錄頁面設置位置標記。這就是說,你有一個頁面,你可以設置,可以輸出像User.Identity.IsAuthenticated的東西,看看用戶是否真正的身份驗證?你的問題只是你登錄後沒有被重定向到正確的URL?或者你沒有登錄? –

+0

%2f ='/'的網址編碼形式。你有沒有指定returnURL或者你在使用URL重寫? – Pleun

+0

這引起了關注,默認頁面可能應該與您的登錄頁面相同。 –

回答

2

當您的網址是this:default.aspx?ReturnUrl =%2f,登錄後,它會重定向回默認頁面,這是默認頁面。如果您將代碼添加到默認頁面:

If (this.User.Identity.IsAuthenticated) 
{ 
    Response.Redirect("somepage.aspx"); 
} 

此問題將消失。這不是因爲他們必須登錄兩次,這是因爲他們不斷回到默認頁面。

1

IIS服務器管理器設置具有默認文檔作爲Login.aspx頁面。 web.config中的表單標籤將defaulturl設置爲默認頁面。我在我的IIS服務器管理器上刪除了默認登錄頁面,問題就消失了。在我看來,IIS管理器應該更新Web.config文件中的該標記看起來像一個錯誤。而不是在頁面加載時重定向我會用這個修補程序代替我,它更安全。

因此,在這種情況下,您將更改您的loginurl = login.aspx和defaulturl = pageafterlogin.aspx,並且在服務器上沒有默認情況下沒有問題。

相關問題