asp.net - 在服务器上获取用户名

问题描述:

我有一个小问题,我有一个应用程序,用于在本地完美工作。认证正在从系统我自己建完成的,它基本上使用的用户名登录的用户,但我遇到了一个问题,因为它是使用服务器的用户名,而不是这是试图给用户的服务器上部署时访问它。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://*.com/questions/1574554/how-to-utilize-asp-net-current-user-name-in-sqlparameter-without-code-behind。 –

+0

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

使用

User.Identity.Name 

,而不是HeadLoginName功能。

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

谢谢兄弟,你的修复和门诺的工作:) –

你以前用什么代码试图获取用户名?你的用户如何登录?

HttpContext.Current.User.Identity.Name?

我不确定是否会一样拉user's登录名出LoginName将Web控件(我不怀疑),但我建议找到这样做的少走弯路。上面的代码一直为我工作。

Menno

+0

钉它交配,有试图使用的LoginName没有特别的理由,只是想获得的用户名和,因为那是一种得到它好歹,我想我可以,但这是一个更好的解决方案! –