Как определить, какая учетная запись Windows выполняет приложение .net? - PullRequest
1 голос
/ 28 апреля 2010

Я пишу веб-часть sharepoint. Он записывает логи в файл (используя StreamWriter). Однако журналы пишутся только для пользователей, чьи учетные записи являются администраторами на сервере, на котором размещена веб-часть. Я хочу определить, какая учетная запись (вероятно, не с помощью SPUser) выполняет код веб-части, чтобы можно было создавать журналы для менее привилегированных пользователей. Это возможно?

Спасибо

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Этот фрагмент даст вам группы, к которым принадлежит пользователь.

var id = System.Security.Principal.WindowsIdentity.GetCurrent();
IdentityReferenceCollection irc = id.Groups;
foreach (IdentityReference ir in irc)
     Console.WriteLine(ir.Value);
1 голос
/ 28 апреля 2010

Есть несколько способов, которые приводят к одному и тому же результату:

  • Request.LogonUserIdentity
  • HttpContext.Request.LogonUserIdentity
  • Page.User.Identity

Я думаю, что один из них должен работать на сервере Sharepoint. То, что будет работать, будет зависеть от контекста, в котором вы хотите включить код, вы должны поместить точку останова в нужное вам место и увидеть, как одна из конструкций выше в окне просмотра. Если один из них сработает, вы получите объект типа System.Security.Principal.WindowsPrincipal, который даст вам все, что вам нужно. Например, свойство Name - это имя пользователя. Свойство groups - это список SecurityIdentifier, который соответствует группам, к которым принадлежит пользователь. Можно использовать класс NTAccount для преобразования SecurityIdentifier в имя. (см., например, У меня есть SID учетной записи пользователя, и я хочу SID групп, к которым он принадлежит )

1 голос
/ 28 апреля 2010

Framework предоставляет класс WindowsIdentity , который представляет аутентифицированного пользователя Windows, и класс WindowsPrincipal , который инкапсулирует WindowsIdentity и информацию о членстве пользователя в роли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...