Как сохранить пользовательский объект в WCF

У меня есть сервис, который использует пользовательский "UserNamePasswordValidator" и потребность сохранить проверенный пользовательский объект, чтобы смочь получить его позже в сервисе. Как я могу сделать это? Или как я могу получить доступ к учетным данным пользователя позже в сервисе?

/Viktor

6
задан 19 January 2010 в 14:05
поделиться

2 ответа

Краткий ответ заключается в том, что наиболее правильный вариант - создать экземпляр IPRINCIPIPAL , который представляет аутентифицированный пользователь и положить его на Thread.CurrentPrincipal .

Вся код, работающий на одной и той же ниве, а затем в службе, сможет получить доступ к аутентифицированному пользователю через Thread.CurrentPrincipal.

Это стандартный способ борьбы с аутентифицированными пользователями в .NET (и, следовательно, в WCF).

3
ответ дан 10 December 2019 в 02:47
поделиться

Это не так просто. Проблема в том, что пользовательский UserNamePasswordValidator вызывается до AuthorizationPolicy.Evaluate (), а где-то посередине WCF инициализирует сам Thread.CurrentPrincipal. Я пробовал установить его внутри валидатора пароля, но он не работает, он сразу же затирается WCF, когда создается начальный участник. Единственный способ заставить его работать - это подождать и установить Thread.CurrentPrincipal в методе AuthorizationPolicy.Evaluate ().

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

6
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: