System.Security.Principal.WindowsIdentity.GetCurrent (). Name is Works - PullRequest
1 голос
/ 04 мая 2009

Я использую System.Security.Principal.WindowsIdentity.GetCurrent().Name (с аутентификацией Windows в моем web.config), чтобы получить имя пользователя клиента.

У меня вопрос, работает ли этот код, когда я помещаю страницу в интрасеть, потому что мне нужно сохранить имя пользователя в сеансе для дальнейшего использования.

Смогу ли я получить имя пользователя, которое пользователь использовал для входа на мою страницу, используя этот код?

void Authenticate()
{
    string strLogin = null;

    try
    {
        strLogin = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        Session.Add("Login", strLogin);
        //Label1.Text = strLogin;
        //Label2.Text = System.Environment.UserName;
    }
    catch (Exception ex)
    {
        Response.Write(strLogin);
        Response.Write("<br/>handled:" + ex.Message.ToString());
        Response.End();
    }
    finally
    {
        GC.Collect();
    }
}

Ответы [ 3 ]

4 голосов
/ 04 мая 2009

Вам потребуется настроить приложение для олицетворения пользователя Windows, который обращается к нему, добавив следующий элемент после элемента аутентификации в Web.Config:

<identity impersonate="true"/>

Если вы не установите для impersonate значение true, тогда рабочий процесс запускается как учетная запись сетевой службы или ASPNET, в зависимости от вашей версии IIS.

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

Да. и это также работает в Page.User.Identity.Name

0 голосов
/ 04 мая 2009

Если ваши пользователи входят в систему на вашем веб-сайте, вы можете получить имя текущего пользователя с помощью Page.User.Identity.Name.

...