5

我想知道 Silverlight 是否有一个安全上下文,您可以在其中使用[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")].

从我迄今为止收集的所有研究来看,为了获得“用户对象”,您必须编写服务(或使用他们想要使我们的生活复杂化的讨厌的 RIA 废话)并来回传递自定义定义xaml (silverlight) 运行时和 wcf 服务均可识别的用户对象(继承自 UserBase 对象)。

假设这是正确的,我如何限制对 silverlight 应用程序中特定屏幕的访问?

如何将当前安全主体设置为与从服务返回的用户实例相同?

我不想重新发明轮子,我希望我可以在 Silverlight 代码中使用 ASP.NET/Windows 中的授权技术,方法是使用 PrincipalPermission 属性或等效的 silverlight 装饰屏幕。

任何帮助将不胜感激!谢谢,

马丁

4

2 回答 2

1

只要应用程序在 System.ServiceModel.DomainServices.Client.ApplicationServices.WebContext.WebContextBase 命名空间(来自 WCF RIA sdk)中实现 WebContextBase 对象,安全上下文就应该是有效的。WebContextBase 实现了 IPrincipal 接口,这反过来使得在整个代码中使用 [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")] 属性成为可能。

为了完成这项工作,需要在解决方案的 Web 项目中添加一个 AuthorizationDomainService,并实现默认或自定义成员资格和角色提供程序。

于 2011-05-06T21:21:31.870 回答
-1

我不确定我是否理解这些PrincipalPermission东西会对你有什么帮助。

您的应用程序必须允许用户导航到他们无权访问的屏幕,然后才能发挥作用。设计您的应用程序会更有意义,以便用户只能导航到他们有权访问的功能。

考虑一下,不要保护“屏幕”,而是尝试保护“屏幕”上显示的数据(您可以在服务器端执行此操作)。

顺便说一句,答案是否定的 Silverlight 不支持安全主体的概念。

于 2011-05-03T21:20:25.077 回答