Контекст безопасности Silverlight - PullRequest
5 голосов
/ 04 мая 2011

Мне интересно, есть ли в Silverlight контекст безопасности, где вы можете пометить части кода с помощью [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")].

Из всех исследований, которые я собрал до сих пор, я понял, что для получения «объекта пользователя» вы должны написать сервис (или использовать грязную хрень RIA, которой они хотят усложнить нашу жизнь) и передатьтуда и обратно пользовательский пользовательский объект (который наследуется от объекта UserBase), который распознается как средой выполнения xaml (silverlight), так и службой wcf.

Если предположить, что это правильно, как мне ограничить доступ кконкретные экраны в приложении Silverlight?

Как настроить текущий субъект безопасности таким же, как экземпляр пользователя, возвращенный из службы?

Я не хочу изобретать колесо, и я надеялся, что смогу использоватьметоды авторизации в ASP.NET/Windows внутри кода silverlight путем украшения экранов атрибутом PrincipalPermission или эквивалентом silverlight.

Любая помощь будет принята с благодарностью!Спасибо,

Мартин

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Пока приложение реализует объект WebContextBase в пространстве имен System.ServiceModel.DomainServices.Client.ApplicationServices.WebContext.WebContextBase (из SDK WCF RIA), контекст безопасности должен быть действительным. WebContextBase реализует интерфейс IPrincipal, который, в свою очередь, делает возможным использование атрибутов [PrincipalPermission (SecurityAction.Demand, Role = "Administrator")] во всем коде.

Чтобы сделать это, в веб-проекте решения необходимо добавить AuthorizationDomainService и внедрить поставщиков по умолчанию или пользовательских членов и ролей.

0 голосов
/ 04 мая 2011

Я не уверен, что понимаю, как PrincipalPermission поможет вам.

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

Вместо того, чтобы защищать «Экраны», подумайте об этом, попробуйте защитить данные, отображаемые на«экраны» (что вы можете сделать на стороне сервера).

Кстати, ответ «нет» Silverlight не поддерживает концепцию принципала безопасности.

...