11

我在 Visual Studio 2013 RC 中工作,并正在使用新Microsoft.AspNet.Identity.*包测试表单身份验证。

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

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

4

3 回答 3

5

我更新了我的示例项目,您可以在这里找到: Identity RC1 sample

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

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

  • IUserLoginStore
  • IRoleStore
  • IUserSecretStore
  • ITokenStore
  • IUserClaimStore
  • IUserManagementStore
  • 用户商店

IIdentityStore 类应位于与模型程序集不同的程序集中,并引用您的模型程序集。IIdentityStore 程序集将依赖于 ASP.Net Identity 核心。

您的 IIdentityStore 的自定义实现需要能够在 POCO 类之间相互转换为 ASP.Net 身份接口,例如 IUser、IUserSecret 等。

在我看来,如果您在商店中使用 EF,那么做很多工作却收效甚微。

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

于 2013-09-11T20:50:54.203 回答
1

是的,这是一个完全受支持的场景,基本上您将希望使用具有默认 EF 实现的 Microsoft.AspNet.Identity.EntityFramework dll 来使用 exclude,但您应该能够重用 Manager 类并使用实现您自己的自定义 Store您自己的 POCO,经理将通过界面很好地使用这些 POCO。对于 RTM 来说,它被精简了一些,我相信 RC 版本还没有那么精简。

更新您可以在此处提前访问 RTM 位: MyGet

于 2013-09-11T19:15:16.907 回答
1

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

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

它在具有复杂 n 层架构的项目中运行良好。

于 2015-08-25T19:20:26.350 回答