none
WCF сервис, сессии и UserNamePasswordValidator RRS feed

  • Общие обсуждения

  • Есть некий WCF сервис, который вызывается так :


    SvydisLTWCFServiceClient client = new SvydisLTWCFServiceClient();
    client.ClientCredentials.UserName.UserName = edUser.Text;
    client.ClientCredentials.UserName.Password = edPassword.Text;...

    Как в классе, имплементирующем интерфейс сервиса получить доступ к этим логину и паролю ?

    Есть так же класс - наследник от UserNamePasswordValidator. Перегружена функция Validate. Можно в ней как-то получить экземпляр класса имплементатора интерфейса сервиса ?

    17 февраля 2016 г. 12:31

Все ответы

  • "Как в классе, имплементирующем интерфейс сервиса получить доступ к этим логину и паролю ?" - обычно они отправляются в один из методов сервиса.

    "Перегружена функция Validate. Можно в ней как-то получить экземпляр класса имплементатора интерфейса сервиса ?" - тут не совсем понятно.

     

    Сделаем содержимое сообщества лучше, вместе!

    17 февраля 2016 г. 19:41
    Модератор
  • "Как в классе, имплементирующем интерфейс сервиса получить доступ к этим логину и паролю ?" - обычно они отправляются в один из методов сервиса."

    В какой ? )
    18 февраля 2016 г. 4:12
  • "Перегружена функция Validate. Можно в ней как-то получить экземпляр класса имплементатора интерфейса сервиса ?" - тут не совсем понятно.


    Хочу, что бы мой наследник от UserNamePasswordValidator имел доступ к экземпляру сервиса.

      /// <summary>
        /// Сервис для обработки заказов.
        /// </summary>
        [ServiceBehavior(
            ConcurrencyMode = ConcurrencyMode.Single,
            InstanceContextMode = InstanceContextMode.PerSession
        )]
        public class CESvydisLTWCFService : CERudestaWCFService.CERudestaWCFService, ISvydisLTWCFService
        {
        }
    
        /// <summary>
        /// Проверка логина/пароля.
        /// Фиктивная имплиментация.
        /// </summary>
        public class UserNameValidator : System.IdentityModel.Selectors.UserNamePasswordValidator
        {
            public override void Validate(string userName, string password)
            {         
            }
        }
     <behaviors>
          <serviceBehaviors>
            <behavior name="CESvydisLTWCFService.Service1Behavior">
              <!-- Чтобы избежать раскрытия сведений о метаданных, присвойте приведенному ниже параметру значение false и удалите конечную точку метаданных перед развертыванием -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
              <!-- Чтобы при сбое получать подробные сведения об исключении для целей отладки, установите для нижеприведенного параметра значение true.  Перед развертыванием установите значение false, чтобы избежать раскрытия информации об исключении -->
              <serviceDebug includeExceptionDetailInFaults="true"/>
              <serviceCredentials>
                <userNameAuthentication
                  userNamePasswordValidationMode="Custom"
                  customUserNamePasswordValidatorType="CESvydisLTWCFService.UserNameValidator, CESvydisLTWCFService"/>
              </serviceCredentials>
            </behavior>
          </serviceBehaviors>
        </behaviors>

    Как в методе Validate получить экземпляр CESvydisLTWCFService ?


    • Изменено LAV_76 18 февраля 2016 г. 4:29
    18 февраля 2016 г. 4:16