如何在现有数据库中使用Identity成员资格(n层)

时间:2013-11-08 16:28:16

标签: asp.net-mvc entity-framework asp.net-identity multi-tier

我一直在阅读various其他questions关于使用的信息,但是当项目以层级开发时,我没有看到任何关于将其与现有数据库一起使用的具体内容。为了论证,请说以下是真的:

    • WebUI中
    • 服务
      • UserService
    • 数据
      • MyDbContext
    • 核心
      • 用户

如何将User(来自Core项目)指定为新身份提供商的IUserStore?我是否遗漏了某些内容,或者这一切都假设网站和成员资格数据库始终位于同一个项目中(或者模型所在的Microsoft.AspNet.Identity.*库有严格的引用)?

在WebUI层设置DbContext只是为了进行身份验证(并将其绑定到带有服务的“MyDbContext”),这看起来很糟糕。我错过了什么,或者只是计划在这个团队中的团队只用于简单的应用程序?

反馈将不胜感激。

更多信息

如果值得一提:

  • 这将是一个全新的解决方案;我要担心旧的/ aspnet_*webpages_*表。我正在尝试采用各种其他自定义解决方案并将它们绑定到一个可靠的解决方案中,因此我对很多选项持开放态度。但是,我想按层分类(如果可能的话)。

1 个答案:

答案 0 :(得分:3)

Asp.net Identity Framework是一组帮助应用程序使用用户身份的组件。核心框架块在Microsoft.AspNet.Identity.Core程序集中。第二个Microsoft.AspNet.Identity.EntityFramework是Core框架的数据持久性实现。

现在,对于n层应用程序,您可以在任何项目/程序集中定义AppUser模型。您需要从Microsoft.AspNet.Identity.EntityFramework.IdentityUser继承它。因此,根据您的方法,您需要引用特定的程序集。

同样适用于MyDbContext。您必须从当前唯一可用的持久性Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext<TUser>继承。您的MyDbContext可以在其​​他项目/程序集中。您还需要在此项目/程序集中引用AppUser程序集。