我试图找出在我的架构中散列我的身份验证密码的最佳位置。这是我的请求流程:
MVC3->MembershipProvider->AccountService->UserRepository->NHibernate->Database
我在服务级别的哈希与存储库级别的哈希之间纠结。我看到了两者的优势,但有人知道处理这个问题的标准地方吗?我将哈希密码存储在数据库中。
我试图找出在我的架构中散列我的身份验证密码的最佳位置。这是我的请求流程:
MVC3->MembershipProvider->AccountService->UserRepository->NHibernate->Database
我在服务级别的哈希与存储库级别的哈希之间纠结。我看到了两者的优势,但有人知道处理这个问题的标准地方吗?我将哈希密码存储在数据库中。
DDD 不是顶级架构。您在有界上下文中应用它。一个系统中可以有许多有界上下文,其中一些是 DDD,一些不是。
无论您的核心域是什么,身份验证都不属于它。它充其量只是一个通用域,一个已经解决的问题。这应该只驻留在应用程序层中——这就是您的 GUI 保护对域的访问的方式。没有花哨的 DDD 构建块。没有存储库,没有服务。只需让您的会员提供商直接与 NHibernate 或什至原始 ADO.NET 交谈。或者,也许您不需要定制的。SqlMembershipProvider 不符合您的需求吗?
如果我们严格地谈论 DDD(域驱动设计),那么密码哈希应该由用户(域实体或聚合根)处理。将用户输入(密码)从控制器传递到 AccountService,让 AccountService 加载/创建新用户,并在用户上调用一个对密码进行哈希处理的方法。如果您需要示例,请查看此 url:MVC3 应用程序中的用户示例