Службы Silverlight и RIA: сохранение входа в систему между сеансами

В настоящее время я пробую Silverlight с RIA Services. Я использую простую форму входа в систему. Я также использую предоставленный шаблон службы домена аутентификации, который создает следующий файл:

[EnableClientAccess]
public class AuthenticationDomainService : AuthenticationBase<User>
{
    // To enable Forms/Windows Authentication for the Web Application, 
    // edit the appropriate section of web.config file.
}

public class User : UserBase
{
    // NOTE: Profile properties can be added here 
    // To enable profiles, edit the appropriate section of web.config file.

    // public string MyProfileProperty { get; set; }
    public int DefaultRows { get; set; }
}

Теперь я могу без проблем войти / выйти из своего приложения. В приложении Silverlight после входа в систему строка:

WebContext.Current.User.IsAuthenticated;

верните истину.

Однако мне нужно сохранять это во всех сеансах (т.е. когда я перезагружаю страницу с помощью F5).

В настоящее время, когда страница перезагружается, мне нужно повторно войти в систему.

Вот мой код для входа:

WebContext.Current.Authentication.Login(new LoginParameters(this.UserName, this.Password, true, string.Empty),
                    (LoginOperation loginOperation) =>
                    {
                        if (loginOperation.LoginSuccess)
                        {
                            NotificationMessage Message = new NotificationMessage(this, null, "CLOSE");
                            Messenger.Default.Send<NotificationMessage>(Message);
                        }
                    }, null);

Третий параметр метода Login - параметр IsPersistent. Судя по документации MSDN, я бы подумал, что при установке значения true при следующей загрузке страницы пользователь все равно войдет в систему. Однако это не так.

Нужно ли мне каким-то образом читать файл cookie, который был установлен внутри, а затем входить в систему в фоновом режиме с именем пользователя / паролем, предоставленным этим файлом cookie? Или здесь работает какая-то другая магия?

Надеюсь как-то это уже сделали.

заранее спасибо


person Gilles Radrizzi    schedule 21.01.2011    source источник


Ответы (1)


Пройдя через шаблон бизнес-приложения Silverlight, я обнаружил следующую строку кода:

WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);

Лучше всего вызвать его в событии запуска приложения внутри App.xaml.cs. Это загрузит аутентифицированного пользователя с сервера.

Я подумал, что отправлю это, если кто-нибудь наткнется на ту же проблему.

person Gilles Radrizzi    schedule 04.02.2011