我有一个小问题,我有一个应用程序曾经在本地完美运行。身份验证是从我自己构建的系统完成的,它基本上使用登录用户的用户名,但是在服务器上部署时我遇到了问题,因为它使用服务器用户名而不是试图访问它。
这是正在运行的代码,但现在它不在服务器上:
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”。我需要子字符串来删除用户之前的域名。
使用
User.Identity.Name
代替
HeadLoginName
功能。
loginName.Text = User.Identity.Name;
您之前使用什么代码来尝试获取用户名?您的用户登录情况如何?
HttpContext.Current.User.Identity.Name?
我不确定您是否可以从 LoginName Web 控件中提取用户的登录名(我怀疑不能),但我建议找到一种不那么迂回的方法。上面的代码一直对我有用。
门诺