Decoupling Microsoft.AspNet.Identity.*



我在Visual Studio 2013 RC中工作,并且正在使用新的Microsoft.AspNet.Identity.*包测试Forms Authentication。

我会集成这些概念(用户、角色等),但想使用我自己的域模型 (POCO),这些模型位于不同的程序集中。我也不想创建对Microsoft.AspNet.Identity.* dll的依赖。

这可能吗?我发现这篇文章说它不是,但这篇文章是基于预览版而不是 RC 版本的标识包编写的。

我已经更新了我的示例项目,您可以在此处找到:标识 RC1 示例

现在实现了一个实体框架模型,它仍然需要引用Microsoft.AspNet.Identity.EntityFramework,因为我不想重新实现所有存储类。但该示例演示如何对模型使用自己的 POCO 类。

如果要从模型程序集中完全删除对 Microsoft.AspNet.Identity.EntityFramework 的依赖,则需要实现实现 IIdentityStore 接口的类,该类具有以下接口的属性:

  • IUserLoginStore
  • 爱乐商店
  • IUserSecretStore
  • 伊托肯商店
  • IUserClaimStore
  • IUser管理存储
  • 目录

类应位于独立于模型程序集的程序集中,并引用模型程序集。IIdentityStore 程序集将依赖于 ASP.Net 标识核心。

您的 IIdentityStore 的自定义实现需要能够将 POCO 类与 ASP.Net Identity 接口(如 IUser、IUserSecret 等)进行转换。

在我看来,如果您无论如何都在商店中使用EF,那么收益却很小,这需要很多工作。

依赖AspNet.Identity.Core程序集,并让一些POCO类分别实现一个微小的接口,对我来说似乎要简单得多。

是的,这是一个完全受支持的方案,基本上你会希望使用 Microsoft.AspNet.Identity.EntityFramework dll 使用排除,它具有默认的 EF 实现,但你应该能够重用 Manager 类,并且只是使用您自己的 POCO 实现您自己的自定义存储,管理器将通过界面很好地使用。 对于RTM,它已经简化并简化了更多,我相信RC版本还没有那么精简。

已更新 您可以在此处抢先体验 RTM 位: MyGet

以防

万一。也许我可以帮助某人。从 asp.net.Identity 中驱逐实体框架

我创建了单独的项目(类库),然后将 ref 添加到 asp.identity.core,然后我在那里实现了我的 UserStore 类,并在 Web 项目中将其提供我的标识配置。

它在具有复杂 n 层体系结构的项目中工作正常。

相关内容

  • 没有找到相关文章