«Пользователь должен пройти проверку подлинности при успешном завершении входа в систему».

#silverlight #wcf-ria-services

#silverlight #wcf-ria-services

Вопрос:

Это исключение генерируется для небольшого подмножества пользователей в моем приложении silverlight. Это приложение 3-летней давности, у которого ранее не было проблем с входом в систему. Я переключил технологию доступа к данным с модели linq2sql на EF6.

 AuthenticationService.Login(userName, password, bool..., string...)
 

Вышеуказанный метод завершается как обычно для каждого пользователя. Содержимое базы данных происходит нормально, одинаково для всех пользователей, однако для небольшого числа из них возвращаемый объект UserBase имеет свойство IsAuthenticated boolean, равное false, что вызывает исключение.

    at OpenRiaServices.DomainServices.Client.ApplicationServices.LoginResult..ctor(IPrincipal user, Boolean loginSuccess)
   at OpenRiaServices.DomainServices.Client.ApplicationServices.WebAuthenticationService.EndLogin(IAsyncResult asyncResult)
   at OpenRiaServices.DomainServices.Client.ApplicationServices.LoginOperation.EndCore(IAsyncResult asyncResult)
   at OpenRiaServices.DomainServices.Client.ApplicationServices.AuthenticationOperation.End(IAsyncResult result)
 

Как вы можете видеть из трассировки стека, на нем запущены последние OpenRiaServices.

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

Заранее спасибо.

Ответ №1:

Здесь была проблема в http://openriaservices.codeplex.com/SourceControl/latest#OpenRiaServices .DomainServices.Server / Framework / ApplicationServices/UserBase.cs

         [ProfileUsage(IsExcluded = true)]
        [Exclude]
        public bool IsAuthenticated
        {
            get { return !string.IsNullOrEmpty(this.Name); }
        }
 

У некоторых из моих пользователей в качестве «имени учетных данных» была пустая строка, поэтому вход в систему прошел успешно, но флаг вернул false.