【问题标题】:Confusion Over SimpleMembership对 SimpleMembership 的困惑
【发布时间】:2013-03-05 09:55:34
【问题描述】:

我对 SimpleMembership 及其在 ASP.NET MVC 网站中的使用有点困惑。

我的项目目前使用代码优先的 dbcontext,它位于一个名为“数据访问”的类库中。

我有另一个名为“DomainObjects”的类库,其中包括我在“数据访问”中声明的 dbcontext 使用的所有实体/对象。

我有另一个名为“DomainFactory”的项目,顾名思义,它公开了访问数据上下文、操作数据等的方法。

最后我有一个名为“Web”的 MVC 4 应用程序(这个应用程序实际上使用 IoC 来调用在“DomainFacotry”项目中声明的方法 - 但是我不认为这与我在这里想要实现的目标相关.)

我的 MVC 应用程序现在处于我希望为其添加安全性的阶段。

使用基本的 Internet 应用程序模板,我可以看到 AccountModel.cs 文件中声明了一个 UsersContext,该上下文在整个应用程序中被大量使用。 这不是我想要的行为。为了可测试性和关注点分离,我希望我的所有身份验证逻辑都由我的域类处理,但是,我不确定如何去做,希望能回答以下问题:

  1. 因为我的 MVC 应用程序没有引用我创建的 dbcontext,我如何重新生成和重新植入数据库?我应该使用 WebActivator 吗?这是首选方法吗?

  2. 将所有身份验证逻辑移至我的 DomainFactory 项目的最佳方式是什么?如果你这样做了,你是怎么做的?

  3. 使用上述方法时有什么需要注意的吗?

非常感谢

【问题讨论】:

    标签: asp.net-mvc domain-driven-design security simplemembership


    【解决方案1】:

    您最大的问题是有多个上下文。 EF 不能很好地处理多个上下文,即使您让它们发挥作用,此时也只能迁移一个上下文,因此其他上下文只能引用现有的 DBO。

    不过,除此之外,将身份验证移至您的类库实际上并不复杂。 ASP 和 EF 关心您的模型所在的位置。只要您的 DbContext 可以获得对它们的引用,就可以了。在这方面,您也可以将 DbContext 存储在类库中,但请注意,EF 只会在启动项目中自动查看 DbContext 实例。如果你把它放在一个类库中,你必须告诉它每次你add-migrationupdate-database-ProjectName 'MyClassLibrary' 时都看那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多