5

コードの一部にフラグを付けることができるセキュリティ コンテキストが Silverlight にあるかどうか疑問に思っています[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]

私がこれまでに収集したすべての調査によると、「ユーザー オブジェクト」を取得するには、サービスを記述し (または、私たちの生活を複雑にする厄介な RIA のがらくたを使用し)、カスタム定義されたオブジェクトをやり取りする必要があります。 xaml (silverlight) ランタイムと wcf サービスの両方で認識できるユーザー オブジェクト (UserBase オブジェクトから継承)。

これが正しいとすると、Silverlight アプリ内の特定の画面へのアクセスを制限するにはどうすればよいですか?

現在のセキュリティ プリンシパルを、サービスから返されたユーザー インスタンスと同じに設定するにはどうすればよいですか?

車輪の再発明はしたくありません。画面を PrincipalPermission 属性または同等の Silverlight 属性で装飾することにより、Silverlight コード内で ASP.NET/Windows の認証技術を使用できることを望んでいました。

どんな助けでも大歓迎です!ありがとう、

マーティン

4

2 に答える 2

1

As long as the application implements the WebContextBase object in the System.ServiceModel.DomainServices.Client.ApplicationServices.WebContext.WebCon­textBase namespace (from the WCF RIA sdk) than the security context should be valid. The WebContextBase implements the IPrincipal interface which in turn makes the usage of [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")] attributes possible throughout the code.

In order to make this work, in the web project of the solution one need to add a AuthorizationDomainService, and implement either the default or custom membership & role providers.

于 2011-05-06T21:21:31.870 に答える
-1

PrincipalPermission内容がどのように役立つかわかりません。

アプリは、ユーザーがアクセスできない画面に移動できるようにしてから、アプリが機能するようにする必要があります。ユーザーがアクセスできる機能にのみ移動できるようにアプリを設計する方が理にかなっています。

「画面」を保護する代わりに、「画面」に表示されるデータを保護してみてください(サーバー側で行うことができます)。

ところで、答えはノーです。Silverlightはセキュリティプリンシパルの概念をサポートしていません。

于 2011-05-03T21:20:25.077 に答える