2011-11-29 26 views
0

我在VS2005 C#上有一個Web應用程序,我想檢查用戶是否登錄到應用程序中。ASP.NET檢查是否爲LoginName爲空

目前我正嘗試

if (LoginName.Equals(null)) 
{ 
    Response.Redirect("/Project/Login.aspx"); 
} 

,但我似乎得到一些錯誤。

任何人都可以告訴我應該怎麼做,或者有沒有更好的方法檢查?

謝謝


編輯:

對不起不夠明確我的問題。

LoginNameSystem.Web.UI.WebControls.LoginName

我得到的錯誤是`對象引用需要非靜態字段,方法或屬性「的Object.Equals(對象)」

+3

什麼錯誤?具體一點,如果你需要社區幫助! – Nauman

+0

顯示'LoginName'的定義以及它是如何實例化的。 – leppie

+0

你嘗試過'string.IsNullOrEmpty(LoginName)'嗎? – V4Vendetta

回答

2

您的實際問題似乎是我如何檢查用戶是否已通過身份驗證?你應該編輯你的問題的標題。

使用ASP時。NET的AuthenticationProvider您可以檢查用戶是否在您的代碼,此代碼驗證的隱藏文件:

User.Identity.IsAuthenticated 

您可以

User.Identity.Name 
1

如果LoginName將變量是一個字符串,你可以使用這個

if(string.IsNullOrEmpty(LoginName)) 
{ 
..... 
} 
1

試想一下你寫的:

if (LoginName.Equals(null)) 

這種說法可以有兩種不同的方式結束了

  1. 它可能返回falseLoginName不等於null
  2. 拋出異常。爲什麼?如果LoginName確實等於null,那麼您正在調用一個未設置爲對象實例的實例變量的方法(=>設置爲null),因此您將獲得NullReferenceException

那麼你能做什麼?

而不是執行使用Equals一個null檢查(這沒有任何意義可言,如上圖所示),你可以要麼:

if (LoginName == null) 

,或者你可以做

if (String.IsNullOrEmpty(LoginName)) 

這會更好。

+0

這兩種方法給了我錯誤:*錯誤'System.Web.UI.WebControls.LoginName'是一個'類型',但使用像'變量'* – gymcode

+0

啊哈!然後,您需要訪問「LoginName」類的*實例*。我認爲'LoginName'是你項目中的一個字符串變量,但事實並非如此。 –

0

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

if(!User.Identity.IsAuthenticated) 
Response.Redirect("\Projects\Login.aspx"); 

訪問的用戶名,例如可以被使用或者你也可以使用會話變量