恐怕犀牛的安全性取决于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