Восстановление имени пользователя клиента с помощью проверки подлинности Windows - PullRequest
0 голосов
/ 13 мая 2009

Я пытаюсь получить имя пользователя и имя клиентского компьютера человека, вошедшего в систему компьютера в нашей интрасети в ASP.NET. Это только для целей регистрации. Я получаю имя пользователя «System.Security.Principal.WindowsIdentity.GetCurrent (). Name», проблема в том, кто заходит на этот сайт, показывая одно и то же имя пользователя (то есть имя сервера, на котором я развернул свое приложение) для всех. Пожалуйста помоги. Я использую режим аутентификации Windows в web.config.

Ответы [ 2 ]

2 голосов
/ 13 мая 2009

Имя пользователя может иметь имя, описанное @ Mehrdad . Для имени компьютера пользователя вы можете использовать HttpRequest объект, подобный этому:

if(Request.IsAuthenticated)
    string userName = Request.LogonUserIdentity.Name;
string machineAddress = Request.UserHostAddress;
string machineName = Request.UserHostName;

(редактировать)

В файле web.config я использую эту строку:

<system.web>
    <authentication mode="Windows"/>
</system.web>

В default.aspx.cs я использую это:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();

        if (Request.IsAuthenticated)
        {
            sb.AppendFormat("User Name: {0}<br/>", Request.LogonUserIdentity.Name);
        }
        else
        {
            sb.Append("Request not authenticated");
        }

        sb.AppendFormat("Machine Address: {0}<br/>", Request.UserHostAddress);
        sb.AppendFormat("Machine Name:    {0}<br/>", Request.UserHostName);

        lblTest.Text = sb.ToString();
    }
}

Это выводит следующий вывод:

Имя пользователя: HPAS \ amantur

Адрес машины: 127.0.0.1

Имя машины: 127.0.0.1

1 голос
/ 13 мая 2009

Код, который вы используете, получит WindowsIdentity, связанный с текущим потоком (это удостоверение, в котором работает ASP.NET). Если вы не олицетворяете личность пользователя, которая не будет работать. Вам нужно использовать это:

HttpContext.Current.User.Identity.Name
...