2

私はFluentSecurityの構成についていくつかのテストを遅く書いています。コントローラーのアクションメソッドに特定のポリシーが適用されているかどうかを検証するテストを作成することはできますが、

expectations.Expect<HomeController>(x=>x.Index()).Has<IgnorePolicy>();

ただし、私が探しているのは、役割固有のテストを作成できるかどうかです。

たとえば、管理者ロールにHomeControllerのIndex()へのアクセスのみを許可した場合、次のようなテストを行います。

expectations.Expect<HomeController>(x=>x.Index()).Has<RequireRolePolicy>().For("Admin");

ネット上に例がないか、FLuentSecurity.TestHelperにこれを行うのに役立つ拡張機能がありません。何かご意見は?

4

2 に答える 2

2

Has拡張機能には、述語をとるオーバーロードがあります。

expectations.Expect<HomeController>(x => x.Index())
    .Has<RequireRolePolicy>(policy => policy.RolesRequired.Contains("Admin"));

ご覧のとおり、RequireRolePolicyは、テスト可能なRolesRequiredプロパティを公開しています。

特定の役割のセットを頻繁にチェックしていることに気付いた場合は、カスタムポリシーを作成し、代わりにそのポリシーをチェックすることをお勧めします。githubのサンプルアプリケーションにこの例(AdministratorPolicy)があります:https ://github.com/kristofferahl/FluentSecurity/blob/master/FluentSecurity.SampleApplication/AdministratorPolicy.cs

于 2012-05-28T13:10:55.210 に答える
0

私はこれを機能させましたが、FluentSecurityに厳しい制限があることがわかりました。同じ名前の2つのアクションメソッドを区別することはできません!!

例えば

public ActionResult Edit(int id){}

[HttpPost]
public ActionResult Edit(SomeCommand command){}

編集(取得)および編集(投稿)でゲストへのアクセスを管理者ユーザーに許可したい場合、両方の方法が1つとして識別されるため、FluentSecurityを介してアクセスすることはできません。これは厳しい制限であるため、このライブラリはお勧めしません。

于 2012-05-29T15:48:24.063 に答える