解耦Microsoft.AspNet.Identity。*

时间:2013-09-10 19:29:54

标签: asp.net-mvc entity-framework asp.net-mvc-5 owin asp.net-identity

我正在使用Visual Studio 2013 RC并使用新的Microsoft.AspNet.Identity.*软件包测试表单身份验证。

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

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

3 个答案:

答案 0 :(得分:4)

我已更新了您可以在此处找到的示例项目:Identity RC1 sample

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

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

  • IUserLoginStore
  • IRoleStore
  • IUserSecretStore
  • ITokenStore
  • IUserClaimStore
  • IUserManagementStore
  • IUserStore

IIdentityStore类应该在与模型程序集分开的程序集中,并引用模型程序集。 IIdentityStore程序集将依赖于ASP.Net Identity核心。

您的IIdentityStore的自定义实现需要能够转换为POCO类和从POCO类转换为ASP.Net Identity接口,例如IUser,IUserSecret等。

如果你无论如何都要为你的商店使用EF,那么对我来说似乎是一项很少收获的工作。

依赖于AspNet.Identity.Core程序集并让你的一些POCO类各自实现一个微小的接口,对我来说似乎更简单。

答案 1 :(得分:1)

是的,这是一个完全支持的方案,基本上你会想要使用具有默认EF实现的Microsoft.AspNet.Identity.EntityFramework dll进行排除,但你应该能够重用Manager类并实现自己的自定义商店使用您自己的POCO,经理将通过界面使用。对于RTM来说,它已经过简化和简化了一点,我相信RC版本还没有那么精简。

已更新 您可以在此处尽早访问RTM位:MyGet

答案 2 :(得分:1)

以防万一。也许我可以帮助别人。 exorcising entity framework from asp.net.Identity

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

在具有复杂n层架构的项目中,它可以正常工作。

相关问题