使用Nhibernate的Servicestack UserAuth持久性(使用ServiceStack.Authentication.NHibernate)(Servicestack UserAut

编程入门 行业动态 更新时间:2024-10-27 17:17:26
使用Nhibernate的Servicestack UserAuth持久性(使用ServiceStack.Authentication.NHibernate)(Servicestack UserAuth Persistence using Nhibernate (using ServiceStack.Authentication.NHibernate))

我正在尝试使用Nhibernate的ServiceStack IUserAuthRepository实现。 我在我的服务IOC容器中注册了NHibernateUserAuthRepository ,但我不知道如何告诉Nhibernate将AuthUser和角色映射到数据库表。

当容器实例化ISessionFactory (使用FluentNhibernate)时,我的映射就会发生。

这是AppHost代码:

container.Register<ICacheClient>(new MemoryCacheClient()); container.Register<IDatabaseFactory>(c => new Oracle10DatabaseFactory(_DomainAssembly, _DomainAssemblyName, c.Resolve<ConfigurationParameters>())); // Register EventPublisher container.RegisterAutoWiredAs<EventPublisher, IEventPublisher>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWiredAs<EventPublisherInterceptor, IInterceptor>().ReusedWithin(ReuseScope.Request); // Register Session & UnitOfWork container.Register<NHibernate.ISession>(item => container.Resolve<IDatabaseFactory>().SessionFactory.OpenSession(new EventPublisherInterceptor(container.Resolve<IEventPublisher>()))) .ReusedWithin(ReuseScope.Request); container.Register<IUnitOfWork>(item => new UnitOfWork(container.Resolve<NHibernate.ISession>())).ReusedWithin(ReuseScope.Request); Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider() }));

这是Oracle10DatabaseFactory构造函数:

public Oracle10DatabaseFactory(Assembly assembly, string namespace, ConfigurationParameters parameters) { var fileCache = new ConfigurationFileCache(assembly, parameters.PathToConfigurationFolder); var config = fileCache.LoadConfigurationFromFile(); if (config == null) { var mapping = AutoMap.Assembly(assembly, new MappingConfiguration(new List<string>() { namespace })) .Conventions.Add<ReferenceIndexConvention>() .Conventions.Add<GuidIndexConvention>() .UseOverridesFromAssemblyOf<MappingConfiguration>(); this.sessionFactory = Fluently.Configure() .Database(OracleClientConfiguration.Oracle10.ConnectionString(c => c.FromConnectionStringWithKey("ZetesMobility_DataAccess_Connectionstring_Oracle")) .UseReflectionOptimizer()) .Mappings(m => m.AutoMappings.Add(mapping)) //.Add(baseMapping) .CurrentSessionContext("web") .ExposeConfiguration(c => c.BuildSchema(NHibernateExtensions.RecreateSchema())) .ExposeConfiguration(x => x.SetProperty("hbm2ddl.keywords", "auto-quote")) .ExposeConfiguration(fileCache.SaveConfigurationToFile) .BuildSessionFactory(); config = fileCache.LoadConfigurationFromFile(); this.sessionFactory = config.BuildSessionFactory(); } else { this.sessionFactory = config.BuildSessionFactory(); } }

如何将身份验证类添加到映射配置?

非常感谢大家。

I'm trying to use the ServiceStack IUserAuthRepository implementation for Nhibernate. I have registered NHibernateUserAuthRepository in my service IOC container but I don't know how to tell Nhibernate to map the AuthUser and roles to database table.

My mapping happens when the container instanciates ISessionFactory (using FluentNhibernate).

Here's AppHost code:

container.Register<ICacheClient>(new MemoryCacheClient()); container.Register<IDatabaseFactory>(c => new Oracle10DatabaseFactory(_DomainAssembly, _DomainAssemblyName, c.Resolve<ConfigurationParameters>())); // Register EventPublisher container.RegisterAutoWiredAs<EventPublisher, IEventPublisher>().ReusedWithin(ReuseScope.Request); container.RegisterAutoWiredAs<EventPublisherInterceptor, IInterceptor>().ReusedWithin(ReuseScope.Request); // Register Session & UnitOfWork container.Register<NHibernate.ISession>(item => container.Resolve<IDatabaseFactory>().SessionFactory.OpenSession(new EventPublisherInterceptor(container.Resolve<IEventPublisher>()))) .ReusedWithin(ReuseScope.Request); container.Register<IUnitOfWork>(item => new UnitOfWork(container.Resolve<NHibernate.ISession>())).ReusedWithin(ReuseScope.Request); Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider() }));

Here's the Oracle10DatabaseFactory constructor:

public Oracle10DatabaseFactory(Assembly assembly, string namespace, ConfigurationParameters parameters) { var fileCache = new ConfigurationFileCache(assembly, parameters.PathToConfigurationFolder); var config = fileCache.LoadConfigurationFromFile(); if (config == null) { var mapping = AutoMap.Assembly(assembly, new MappingConfiguration(new List<string>() { namespace })) .Conventions.Add<ReferenceIndexConvention>() .Conventions.Add<GuidIndexConvention>() .UseOverridesFromAssemblyOf<MappingConfiguration>(); this.sessionFactory = Fluently.Configure() .Database(OracleClientConfiguration.Oracle10.ConnectionString(c => c.FromConnectionStringWithKey("ZetesMobility_DataAccess_Connectionstring_Oracle")) .UseReflectionOptimizer()) .Mappings(m => m.AutoMappings.Add(mapping)) //.Add(baseMapping) .CurrentSessionContext("web") .ExposeConfiguration(c => c.BuildSchema(NHibernateExtensions.RecreateSchema())) .ExposeConfiguration(x => x.SetProperty("hbm2ddl.keywords", "auto-quote")) .ExposeConfiguration(fileCache.SaveConfigurationToFile) .BuildSessionFactory(); config = fileCache.LoadConfigurationFromFile(); this.sessionFactory = config.BuildSessionFactory(); } else { this.sessionFactory = config.BuildSessionFactory(); } }

How do I add the Authentication classes to mapping configuration?

Many Thanks everyone.

最满意答案

在你的Fluently.Config()中,部分Mappings(m - > m ...,你需要告诉FluentNhibernate在包中包含映射,如下所示:

.Mappings(m => m.FluentMappings .AddFromAssemblyOf<UserAuthPersistenceDto>())

你的应该可能最终看起来像

.Mappings(m => { m.AutoMappings.Add(mapping); m.FluentMappings .AddFromAssemblyOf<UserAuthPersistenceDto>(); })

In your Fluently.Config(), the section Mappings(m -> m..., you need to tell FluentNhibernate to include the mappings in the package, like so:

.Mappings(m => m.FluentMappings .AddFromAssemblyOf<UserAuthPersistenceDto>())

Yours should probably end up looking something like

.Mappings(m => { m.AutoMappings.Add(mapping); m.FluentMappings .AddFromAssemblyOf<UserAuthPersistenceDto>(); })

更多推荐

本文发布于:2023-08-03 16:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1393298.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:持久性   UserAuth   Servicestack   Nhibernate   Persistence

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!