Загрузка начального состояния приложения silverlight на основе asp.net сеанса

StackOverflow https://stackoverflow.com/questions/1063267

Вопрос

Я пишу приложение silverlight, которое напоминает систему корзины покупок.Это приложение может быть запущено с веб-сайта asp.net только после входа пользователя на сайт.

При первой загрузке приложение отправит запрос на серверную часть через службу WCF для возврата всех существующих товаров в корзине покупок.

Поэтому приложению silverlight необходимо знать, кто текущий пользователь, чтобы определить, какую корзину загружать.

Я обнаружил, что пока есть пара способов, но ни один из них меня не устраивает:

  1. использование wcf aspnet compat.silverlight может спросить, кто является текущим пользователем, обратившись к службе wcf.
  2. передайте параметры со страницы в xaml с помощью xaml.InitParameters и передайте минимальное количество информации для идентификации пользователя в сериализованном формате.
  3. передайте параметры через строку запроса в xaml (по-видимому, это тоже возможно)

Кто-нибудь может поделиться лучшими практиками для достижения этой цели?Спасибо

Это было полезно?

Решение

Мы используем первое решение в наших проектах.В этом случае вам не нужно изобретать какой-либо формат сериализации или что-то в этом роде.Недостаток такого подхода - дополнительные асинхронный логика при запуске.

Пример обслуживания:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class UserInfoService : IUserInfoService
{
        public UserInfo GetUserInfo()
        {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                        return null;

                var userInfo = new UserInfo
                {
                        Login = HttpContext.Current.User.Identity.Name,
                        Fullname = ...,
                };

                return userInfo;
        }
}

Отправка идентификатора пользователя через initParams или строку запроса, я думаю, не очень хорошая идея.Такие вещи должны быть более скрытыми.

Действительно важно проверить пользователя на сервере на каждый вызов службы, потому что любой может вызвать ваши службы таким же образом, как и ваше приложение.

HTH

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top