Во-первых, мы ограничены использованием существующей веб-инфраструктуры, которая обрабатывает аутентификацию и авторизацию.Веб-проект использует аутентификацию форм и записывает в зашифрованный файл cookie.Информация о пользователях отображается на страницах aspx как свойство:LoggedInUser.Current
У этого есть несколько свойств, включая userId и список ролей.
Я смотрел на использование initParams, но там не очень успешно (правка: изначально я не мог сделать это динамически).Я создал простой объект POCO с атрибутом [Key], но мне нужно, по крайней мере, иметь возможность передавать userId со страницы aspx на встроенный silverlight.
Какой самый простой способ передатьдинамический объект от aspx до silverlight 4?
Спасибо, slugster:
Настройте initParams на странице aspx<param name="initParams" value="<%=InitParam%>"/>
в коде:
private void LoadSilverlightParams()
{
LoggedInUser user = LoggedInUser.Current;
InitParam = "UserId=" + user.PersonId.ToString() + ",";
InitParam += "OrganizationId=" + user.OrganizationId.ToString() + ",";
InitParam += "RoleList=";
foreach(string s in user.Roles)
{
InitParam += s + "|";
}
InitParam.Remove(InitParam.Count() - 1);
}
(не красиво, но работает). Затем использовал пример Slugster для использования значений на стороне Silverlight.
Предупреждение: передача пользовательской информации с помощью параметров init открываетИнформация в виде простого текста для пользователя, просматривающего страницу (они просто должны просмотреть источник).В итоге мы использовали службу домена аутентификации и тот же пользовательский объект, что и aspx