2011-09-20 21 views
2

我有一個小問題,我有一個應用程序,用於在本地完美工作。認證正在從系統我自己建完成的,它基本上使用的用戶名登錄的用戶,但我遇到了一個問題,因爲它是使用服務器的用戶名,而不是這是試圖給用戶的服務器上部署時訪問它。asp.net - 在服務器上獲取用戶名

這是正在工作的代碼,但現在不是在服務器上:

public static string GetUser() 
    { 
     WindowsIdentity curIdentity = WindowsIdentity.GetCurrent(); 
     WindowsPrincipal myPrincipal = new WindowsPrincipal(curIdentity); 
     return curIdentity.Name; 
    } 

不過,我可以看到這個代碼:

 <LoggedInTemplate> 
     <span class="alignLeft"> 
      <asp:LoginName ID="HeadLoginName" runat="server"/> 
     </span> 
     <span class="alignRight"> 
      <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> 
     </span> 
    </LoggedInTemplate> 

,還是習慣的良好登錄用戶而不是服務器。我現在試圖獲得該用戶的價值,但我有問題要這樣做。

我需要做的就是在一個字符串中獲取它。

loginName.Text = HeadLoginName.ToString().Substring(6); 

這隻返回:「.Web.UI.WebControls.LoginName」。我需要子字符串在用戶之前刪除域名。

+2

也許我誤解了,但它聽起來像你在本地使用asp.net會員身份驗證,並且服務器啓用了Windows身份驗證? – AndrewC

+1

爲什麼不從HttpContext獲取用戶名?更多http://stackoverflow.com/questions/1574554/how-to-utilize-asp-net-current-user-name-in-sqlparameter-without-code-behind。 –

+0

@AndyC我更新了我用的是代碼的描述,現在不是。 –

回答

6

使用

User.Identity.Name 

,而不是HeadLoginName功能。

loginName.Text = User.Identity.Name; 
+0

謝謝兄弟,你的修復和門諾的工作:) –

3

你以前用什麼代碼試圖獲取用戶名?你的用戶如何登錄?

HttpContext.Current.User.Identity.Name?

我不確定是否會一樣拉user's登錄名出LoginName將Web控件(我不懷疑),但我建議找到這樣做的少走彎路。上面的代碼一直爲我工作。

Menno

+0

釘它交配,有試圖使用的LoginName沒有特別的理由,只是想獲得的用戶名和,因爲那是一種得到它好歹,我想我可以,但這是一個更好的解決方案! –