1

エンティティでRhino Securityを使用したい場合、そのエンティティにはGuidタイプのSecurityKeyフィールドが必要です。エンティティのクラスのコンストラクターに SecurityKey を割り当てるステートメントがある例を見ました

public class Document
{
  public Document() { SecurityKey = Guid.NewGuid(); } 
  public virtual int Id {get; set;}
  public virtual string Name { get; set;}
  public virtual Guid SecurityKey { get; set;}
}
public class DocumentInformationExtractor : IEntityInformationExtractor
{ .... }

コンストラクターは、毎回新しい Guid SecurityKey を割り当てました。なぜこれが機能するのかわかりません。永続化されていない新しいエンティティに対してのみ、新しい Guid を割り当てるべきではありませんか?

4

1 に答える 1

1

それは正しい。そうしないと、Guid保存されたものが になり{00000000-0000-0000-0000-000000000000}ますが、適切な空でない GUID が必要です。このフィールドは、次の呼び出し時に使用されます。

permissionsBuilderService
    .Allow("/Document/Edit")
    .For(user1)
    .On(MyDocument)
    .Level(20)
    .Save();

これは、将来使用する可能性があるため、空の Guid を保存しないようにするために使用されるだけですSecurityKey(アクセス許可が必要ない場合は、アクセス許可を割り当てる必要はありません)。Rhino-Security はグラフのロードを監視SecurityKeyし、保存されたグラフを取り込みます。

于 2011-02-16T08:59:38.993 に答える