如何在服务器上获取用户名

问题描述 投票:0回答:2

我有一个小问题,我有一个应用程序曾经在本地完美运行。身份验证是从我自己构建的系统完成的,它基本上使用登录用户的用户名,但是在服务器上部署时我遇到了问题,因为它使用服务器用户名而不是试图访问它。

这是正在运行的代码,但现在它不在服务器上:

    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”。我需要子字符串来删除用户之前的域名。

c# asp.net visual-studio iis
2个回答
6
投票

使用

User.Identity.Name

代替

HeadLoginName
功能。

loginName.Text = User.Identity.Name;

3
投票

您之前使用什么代码来尝试获取用户名?您的用户登录情况如何?

HttpContext.Current.User.Identity.Name?

我不确定您是否可以从 LoginName Web 控件中提取用户的登录名(我怀疑不能),但我建议找到一种不那么迂回的方法。上面的代码一直对我有用。

门诺

© www.soinside.com 2019 - 2024. All rights reserved.