洋葱架构访问目录和应用程序数据库

时间:2014-12-24 02:09:16

标签: asp.net-mvc mono ldap directoryservices onion-architecture

我对洋葱建筑有点困惑。

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

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

我正在努力定义业务逻辑,这就是原因。

所有应用程序服务都保存到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 Razor)

我很确定我做错了。有人可以用某种伪示例指出我正确的方向。例如模型在哪里等。

提前谢谢

1 个答案:

答案 0 :(得分:1)

对于单点登录应用程序,您可能希望将所有安全性移出到直接与LDAP提供程序一起使用的单独服务中。这样,您就不会将特定于产品的LDAP代码紧密耦合到Web应用程序中。然后,您的Web应用程序可以调用安全服务,向其传递登录到操作系统的用户的登录凭据。这样,如果您需要向用户组或用户组授予权限,您可以从安全服务返回一个布尔值,该布尔值是否登录用户是否已获得授权。