asp.net-mvc-2 – 查找要在ASP.NET MVC项目上使用的授权框架
我有一个asp.net mvc项目,持久性由存储库处理.使用表单身份验证.现在我需要实施授权.例如,我需要确保经理用户只能打开他/她的任务并将工作人员分配到任务中.工人只能看到分配给他/她的任务.超级版主可以编辑所有内容.
是否有任何可以使用的框架允许我定义权限? 我正在评估Ayende Rhino Security.我在哪里可以获得更多示例代码?您对Rhino Security有何看法? 解决方法
我担心,Rhino Security依赖Nhibernate来工作.
我一直在评估Rhino Security几个月,最后,我决定使用它,因为它是一个非常好的产品. 您可以在Ayende的 blog或 here上找到有用的信息. 我有点疏远将它与StructureMap(而不是Castle Windsor)集成.你可以找到一些信息 here. 要做你想要实现的目标,你必须定义一个实现IEntityInformationExtractor接口的类. 首先,您必须添加以下引用(我已经使用NH 3.0重新编译了Rhino Security): > Microsoft.Practices.ServiceLocation 然后定义一个引导程序: 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(); 当你的应用程序启动时,你会这样做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AJAX将多个参数传递给WebApi
- asp.net-mvc – 数据注释 – 如何用MVC3中的Web.Config值替
- asp.net – 我可以重新发布或携带POST数据(如果是这样,我可
- asp.net – 如何使WebMethods序列化ExpandoObject
- asp.net-mvc – ASP.NET MVC应用程序的WatiN最佳实践/经验法
- asp.net-mvc – 在ASP.NET MVC中禁用布局?
- asp.net-mvc – 当前上下文中不存在’HttpClientFactory’
- asp.net-mvc – 在ASP.NET MVC中的ReturnUrl
- asp.net-mvc – 如何在ASP.NET MVC中生成弹出页面链接
- asp.net – MVC4捆绑IncludeDirectory – 文件路径错误