Asp.NET Principal WebORB HttpHandler - PullRequest
       22

Asp.NET Principal WebORB HttpHandler

4 голосов
/ 01 декабря 2009

У меня есть приложение Flex-WebORB-Asp.NET. При входе в систему существует AuthenticationHandler, который реализует интерфейс WebORB:

IPrincipal CheckCredentials(string username, string password, Request message);

Итак, я создаю Принципала и возвращаю его. WebORB использует принципал для проверки подлинности и авторизации удаленных вызовов методов.

var principal = new GenericPrincipal(new GenericIdentity(user.id.ToString()), new[] { "admin" });
return principal

Теперь, на этом этапе, если я проверю, что такое HttpContext.Current.User.Identity, это WindowsIdentity.

Пока все хорошо. Когда позже через WebORB выполняется удаленный вызов, я получаю идентификатор пользователя, вошедшего в систему, по телефону:

Thread.CurrentPrincipal.Identity.Name

Так что, я думаю, WebORB удостоверяется, что Идентичность потока устанавливается при каждом удаленном вызове.

Проблема в том, что когда я вызываю HttpHandler (для получения изображения), я также пытаюсь получить идентификатор зарегистрированного пользователя с помощью Thread.CurrentPrincipal.Identity.Name, но это не работает. Возможно, потому что с HttpHandler, WebORB не вступает в действие.

Как бы вы решили эту проблему, чтобы я мог получить идентификатор вошедшего в систему пользователя в обоих случаях одинаково? Поместить это в объект сеанса? Можете ли вы изменить HttpContext.Current.User.Identity? Разве HttpContext.Current.User.Identity не должен совпадать с Thread.CurrentPrincipal.Identity.Name?

пс: пользователи не в Active Directory.

1 Ответ

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