恐怕犀牛的安全性取決於NHibernate的工作。
我一直在評估犀牛安全幾個月,最後,我決定使用它,因爲它是一個非常非常好的產品。
你可以在Ayende的blog或here找到有用的信息。 我已經分散了一點,把它與StructureMap(而不是Castle Windsor)整合在一起。你可以找到一些信息here。
要做你想達到的目標,你必須定義一個實現IEntityInformationExtractor接口的類。
所有你需要添加下列引用(我已經重新編譯犀牛安全與NH 3.0),以首先:
- Microsoft.Practices.ServiceLocation
- NHibernate的
- NHibernate.ByteCode.Castle
- StructureMap
- Rhino.Security
- StructureMapAdapter
然後定義一個引導程序:
public static class Bootstrapper
{
public static void Initialize()
{
ObjectFactory.Initialize(cfg =>
{
cfg.UseDefaultStructureMapConfigFile = false;
cfg.IgnoreStructureMapConfig = true;
cfg.AddRegistry<StructureMapRegistry>();
});
ServiceLocator.SetLocatorProvider(() => new StructureMapServiceLocator(ObjectFactory.Container));
}
}
然後你定義StructureMap註冊表類:
public class StructureMapRegistry : Registry
{
public StructureMapRegistry()
{
string ConnDb = "Data Source=(local); Initial Catalog=RhinoSecurity_Test; Trusted_Connection=true;";
For<ISessionFactory>()
.Singleton()
.TheDefault.Is.ConstructedBy(() => new NHSessionFactory(ConnDb, false).SessionFactory);
For<ISession>()
.Singleton()
.TheDefault.Is.ConstructedBy(x => x.GetInstance<ISessionFactory>().OpenSession());
For<IAuthorizationRepository>()
.Use<AuthorizationRepository>();
For<IPermissionsService>()
.Use<PermissionsService>();
For<IAuthorizationService>()
.Use<AuthorizationService>();
For<IPermissionsBuilderService>()
.Use<PermissionsBuilderService>();
For<IEntityInformationExtractor<Model.Task>>()
.Use(p =>
{
return (new TaskInfromationExtractor(p.GetInstance<ISession>()));
});
}
}
NHSessionFactory基本上創建一個會話NH工廠。
我創建了一個實現IEntityInformationExtractor的類(TaskInfromationExtractor)。這將允許您爲任務實體定義權限。 現在您的應用已準備就緒。你只需要「引導」結構圖:
- Bootstrapper.Initialize();
當你的應用程序啓動時你會做到這一點。 現在你可以使用Rhino安全信息庫和服務來創建用戶,組,關係等等,因爲我給你建議的鏈接。 你可以找到一個我準備好的樣本here
非常感謝鏈接。任何示例代碼將非常受歡迎。我的項目使用Ninject,但是Rhino Security自述文件說:「Rhino Security使用Common Service Locator(http://www.codeplex.com/CommonServiceLocator)」。這會是一個問題嗎?預先感謝您提供的任何資源。 – 2011-01-28 20:44:14
是的,這就是爲什麼我切換到StructureMap的原因,不是唯一的......我必須說我對S.M.更加開心。現在。 – LeftyX 2011-01-29 19:18:44