ASP.NET身份2到3

时间:2016-04-21 08:49:31

标签: sql-server asp.net-mvc asp.net-core-mvc asp.net-identity-2 asp.net-identity-3

是的,所以..我想我很困惑!

我有几个使用ASP.NET Identity 2.1运行的ASP.NET MVC 5站点,一切都很棒。我正在创建一个新的MVC 6站点,我希望用户使用他们用于其他系统的现有凭据。我已经尝试了以下内容:

  1. 将ASP.NET身份2数据库迁移到3(说它不能因为表已经存在,我认为它会以诚信的方式迁移用户)
  2. 尝试让MVC 6与ASP.NET Identity 2.1一起使用并且失败了
  3. 我只是想知道我的选择是什么,因为新版本的文档不是很好,我得知数据库中有DDL更改但我希望有一种方法可以让我的MVC 5网站随身携带随着.NET身份3数据库向后兼容2.1。

    我的另一个选择是升级MVC 5应用程序以使用Identity 3,而我认为这意味着将它们更新为MVC 6,这是我真正没有资源的东西,或者拥有一个全新的Identity数据库(这似乎是最简单的选择)。

    任何意见都会有所帮助,毫无疑问我错过了一些细节,如果有人对此设置有任何进一步的问题,请填写空白。

3 个答案:

答案 0 :(得分:2)

我做了同样的事情,这是一项很大的努力 - 你必须运行数据库迁移,但首先是

ASP Identity V3表&迁移

The ASP Identity V3 Tables &  Migration

ASP Identity V3字段

The fields inside the users table, you can extend this, see below

配置表格 在Startup.cs中并更改services.AddIdentity

   services.AddIdentity<ApplicationUser, IdentityRole<int>>()
    .AddEntityFrameworkStores<ApplicationDbContext, int>()
    .AddDefaultTokenProviders();

在ApplicationContext.cs中,将类更改为以下签名。

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<int>, int>

在ApplicationUser.cs中,将类更改为以下签名。

`public class ApplicationUser : IdentityUser<int> {...}`
  • 鉴于所有更改,我发现更容易删除中的所有内容 迁移文件夹(迁移除外)。转到命令提示符 项目的目录,并键入/添加迁移,如dotnet ef migrations add MyDatabaseHere -o Data\Migrations。 (-o选项是指定目标文件夹而不是根文件夹)
  • 对于迁移的任何问题我只需删除数据库并再次部署。
  • 或者您可以使用this自动执行此操作

我从EF获得了两个迁移脚本,我不知道为什么......但是对于来自github链接的更多引用1&amp; 2

答案 1 :(得分:2)

实施IdentityServer3,它可以直接挂钩到您现有的ASP.Net Identity EF DB。然后将其他站点用作oAuth客户端,即MVC 5和/或MVC 6它不重要,因为他们将要做的就是在IdentityServer3站点之间来回传递安全令牌。

答案 2 :(得分:0)

您可以在Asp.Net Core中使用身份2,并在数据库中保留密码哈希。只需将此代码添加到startup.cs

 services.Configure<PasswordHasherOptions>(options => {
          options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2;
      });