繁体   English   中英

使用实体框架将asp.net Identity实现到现有数据库中

[英]Implementing asp.net Identity into already existing database with entity framework

我正在尝试更新旧网站。 它已经有一个包含用户和角色表的现有数据库,其中包含现有数据。

我需要创建一个新的web-api和一个新的Web项目,并将ASP.NET Identity集成到现有的数据库中。

我目前正在设置解决方案以解决项目,如下所示:

  • 服务
  • WEB_API
  • WEB_UI

我的目标是在服务层实现Identity,以便我的WebAPI和MVC站点都可以使用相同的身份机制。

我现在相当不知所措,我在过去一两天内阅读了许多教程和文章,并最终选择了重新实现IUserStoreIRoleStore 并且还可以映射OnModelCreatingMethod的不同实体。

我似乎找不到针对我想做的教程。 我的数据库不同于简单地重新映射列的名称,而且我不想重新实现整个Identity Stores,因为只有少数冲突的字段。 我发现的大部分内容都与使用mysql而不是EF有关。 我还是想使用Entity Framework。

我遇到的问题:

  • 数据库中的当前Users Table使用Int pk,而不是GUID
  • 密码字段使用不同的哈希算法。 所以我需要覆盖Identity检查和存储密码的方式。
  • 我的数据库中没有所有必需的Identity User字段,但是我能够添加新字段,我只是无法更改现有字段。
  • 我正在使用Database First,因为数据库已经存在。

所以基本上我的问题是,为了克服上述问题,我需要朝哪个方向前进。 我可以通过更改数据库映射来逃脱吗? 或者我是否需要重新实现用户和角色存储?

我最初计划的是使用实体框架重新实现用户和角色存储,然后我可以使用,如果数据库首先建模类并将实际的数据库结构和字段映射到我的ApplicationUser字段。 但这就是我认为我可能潜入寒冷水域的地方,如果没有必要,我通常不会重新发明轮子。

- 如果您还没有备份当前数据库,首先应该做的事情!

您可以首先使用代码来更新现有数据库。

我找到了这个演练,它似乎接近你所在的路线,我希望它有助于解决你的问题,从“迁移到Visual Studio 2013”​​开始。 http://www.asp.net/identity/overview/migrations/migrating-an-existing-website-from-sql-membership-to-aspnet-identity

这将创建一些新表,但不一定是新数据库。

下载Nuget软件包:Microsoft.AspNet.Identity.EntityFramework,Microsoft.AspNet.Identity.Owin,Microsoft.Owin.Host.SystemWeb

启用迁移并运行如下脚本: https//aspnet.codeplex.com/SourceControl/latest#Samples/Identity/SQLMembership-Identity-OWIN/Migrations.sql

或者您可以尝试使用Visual Studio扩展中的反向POCO生成器。

(我第一次尝试在这里写答案。试图澄清。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM