2014-04-28 28 views
1

我有一個導航控件,僅顯示給主頁上已通過身份驗證的用戶。這可以通過測試用戶名+ [空格]導致login.aspx重定向,但Identity.IsAuthenticated爲TRUE

System.Web.HttpContext.Current.User.Identity.IsAuthenticated == true 

我使用窗體身份驗證與Active Directory的成員和登錄控件中顯示。

如果我使用我的用戶名登錄,並在最後加上一個空格......'用戶名'則頁面被302'd改爲returnurl,然後直接返回到login.aspx ......但奇怪的是當加載登錄.aspx頁面第二次,IsAuthenticated保持爲真。

這意味着我們的登錄頁面顯示不正確的導航...

所以現在我重定向到即使IsAuthenticated是真正的登錄界面,任何人都可以解釋爲什麼會這樣?

顯然用戶名中的空格是錯誤的,但我想確保用戶不會遇到這種情況。

此代碼在其他任何情況下均可正常工作。

回答

0

這不是你問的問題的解決方案,但是仍然可以爲您解決,應該無論如何做IMO:

你爲什麼不應用Trim加工前的用戶名它?

username = username.Trim(); 

這應該刪除開始和結束處的任何空白,因此應該永遠不會發生有問題的情況。

+0

我使用一個ASP.NET登錄控件,開箱即用......我可以應用一些javascript來修剪它, – Craig

+0

但是沒有javascript的用戶仍然可以解決這個問題...我更喜歡服務器端解決方案... – Craig

+0

I我正在使用MVC,因此它在這裏有點不同,但是在可以更改身份驗證之前沒有服務器端代碼? – ChrFin

2

你是對的chrfin ......我發現叫OnLoggingIn Login控件的方法......我只是用戶名設置本身就帶有裝飾和它的工作很大的..謝謝

protected void Login1_OnLoggingIn(object sender, System.Web.UI.WebControls.LoginCancelEventArgs e) 
    { 
     Login1.UserName = Login1.UserName.Trim(); 
    }