对SimpleMembership的困惑

时间:2013-03-05 09:55:34

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

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

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

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

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

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

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

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

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

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

  3. 使用上述方法时,我需要注意什么?

  4. 非常感谢

1 个答案:

答案 0 :(得分:1)

这里最大的问题是有多个上下文。 EF对多个上下文不起作用,即使你让它们起作用,此时也只能迁移一个上下文,所以其他的只能引用现有的DBO。

除此之外,将身份验证移动到类库中并不复杂。 ASP或EF护理您的模型所在的位置。只要你的DbContext可以获得对它们的引用,你就是好的。在这方面,您可以将DbContext存储在类库中,但只是被告知EF只会在启动项目中自动查看DbContext实例。如果你把它放在一个类库中,你必须告诉它每次add-migrationupdate-database -ProjectName 'MyClassLibrary'时都会看到它。