Загрузка начального состояния приложения silverlight на основе asp.net сеанса
-
21-08-2019 - |
Вопрос
Я пишу приложение silverlight, которое напоминает систему корзины покупок.Это приложение может быть запущено с веб-сайта asp.net только после входа пользователя на сайт.
При первой загрузке приложение отправит запрос на серверную часть через службу WCF для возврата всех существующих товаров в корзине покупок.
Поэтому приложению silverlight необходимо знать, кто текущий пользователь, чтобы определить, какую корзину загружать.
Я обнаружил, что пока есть пара способов, но ни один из них меня не устраивает:
- использование wcf aspnet compat.silverlight может спросить, кто является текущим пользователем, обратившись к службе wcf.
- передайте параметры со страницы в xaml с помощью xaml.InitParameters и передайте минимальное количество информации для идентификации пользователя в сериализованном формате.
- передайте параметры через строку запроса в 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