2014-12-24 30 views
0

我有点卡在洋葱体系结构。洋葱体系结构访问目录和应用程序数据库

假设我正在开发一个应用程序,用户可以注册一个帐户,登录并维护他们的帐户(例如更改电话号码)。

然而,当他们登录,就可以做其他的应用程序的东西(例如,创建产品,添加博客条目,发送附件等有照片的消息...)

我挣扎来定义业务逻辑和这是为什么。

所有应用程序服务都被保存到Postgresql数据库中。

所有的用户管理功能和登录到他们的账户得到处理LDAP 389 Directory Server。我将使用Novell.Directory.Ldap包,因为这将在单声道上运行,但目前还不支持System.DirectoryServices.Protocols

应用程序数据库和目录服务器都有唯一的表。

我应用程序数据库实体和LDAP目录服务模型都放在App.Domain.Entities中吗?

从技术上讲,我有2种不同类型的数据库与不同类型的模型。

不完全确定如何处理这一个。

我的解决方案结构:

    • App.Domain.Entities
    • App.Domain.Interfaces
  • 基础设施
    • App.Infrastructure.Data(FluentNHibernate )
    • App.Infrastructure.DependecyResulution(SimpleInjector)
    • App.Infrastructure.Interfaces
    • App.Infrastructure.Logging(NLOG)
    • App.Infrastructure.LDAP(Novel.Directory.Ldap)
  • 服务
    • App.Services.Interfaces
  • 网络
    • App.Web.UI(ASP.NET MVC 4剃刀)

我敢肯定,我做错了。有人可以用某种伪示例让我指出正确的方向吗?例如模型去哪里等

预先感谢您

回答

1

为单次登录应用程序,你可能想全部安全搬出到符合LDAP提供直接作用单独的服务。这样您就不会将产品特定的LDAP代码紧密地耦合到您的Web应用程序中。然后,您的Web应用程序可以调用安全服务向其传递登录到操作系统的用户的登录凭证。这样,如果您需要为用户组或用户授予权限,则只需从安全服务返回布尔值即可登录用户是否已授权。

+0

我还是有点困惑。由于单点登录不用于登录,他们也可以更改其详细信息/维护帐户。我只是不确定LDAP实体是否需要进入域,或者与LDAP进行通信的整个实现是否必须进入它自己的独特项目。 –

+0

我的建议是将LDAP的东西放入自己的独特项目中。 –