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();

这只是为了不保存空的SecurityKeyGuid,因为您将来可能会使用(如果不需要权限,则无需分配权限)。Rhino-Security 将处理图表的加载并SecurityKey使用保存的图表进行填充。

于 2011-02-16T08:59:38.993 回答