C# MVC5 ASP.net Identity 2.0用户管理和从localDB部署到IIS服务器8

C# MVC5 ASP.net Identity 2.0用户管理和从localDB部署到IIS服务器8,c#,asp.net,sql-server,iis,asp.net-identity,C#,Asp.net,Sql Server,Iis,Asp.net Identity,在使用WebForms和会员资格提供商将近一年之后,我对ASP.net MVC5和Identity还不熟悉 我刚刚用Identity 2.0创建了一个简单的MVC5应用程序。管理员用户可以登录和上载新文档并添加新链接。我禁用了用户注册(在注册了第一个管理员用户之后),因为我需要手动创建管理员用户 我将该项目部署到IIS 8服务器上,工作正常。我使用SQL Management Studio从我的localDB导出asp.net标识表,并将它们导入到项目使用的同一SQL数据库中,更改本地使用的指向

在使用WebForms和会员资格提供商将近一年之后,我对ASP.net MVC5和Identity还不熟悉

我刚刚用Identity 2.0创建了一个简单的MVC5应用程序。管理员用户可以登录和上载新文档并添加新链接。我禁用了用户注册(在注册了第一个管理员用户之后),因为我需要手动创建管理员用户

我将该项目部署到IIS 8服务器上,工作正常。我使用SQL Management Studio从我的localDB导出asp.net标识表,并将它们导入到项目使用的同一SQL数据库中,更改本地使用的指向App_数据中mdf文件的web.config连接字符串,指向我导入标识表的SQL数据库。 不幸的是,此尝试无效,因为使用相同的登录凭据会导致登录失败

第一个问题: 这是将标识表集成到我的项目数据库中的最佳方法吗?如果没有,我还应该做什么

第二个问题: 当我使用成员资格提供程序时,我从IIS用户和角色工具管理用户。 现在,我不知道有任何系统来管理用户和角色。 如何在不使用注册表的情况下创建新用户?如何管理这些用户和角色


非常感谢。

我已经查看了关于的下一个链接,我认为这对您很有用

在这篇文章中,他指出:

SQL成员资格中使用的加密算法不同于 在新的身份识别系统中。要重用旧密码,我们需要 当老用户使用SQL登录时,有选择地解密密码 身份验证中使用加密算法时的成员身份算法 新用户

因此,这应该是您的主要登录问题。 不管文章怎么说,在Asp.net identity中,您可以定义自定义密码哈希器,因此可以使用成员身份算法使用Asp.net identity登录,只需创建一个实现IPasswordHasher的自定义密码哈希器。然后,在创建实例UserManager时,为PasswordHasher分配新的自定义密码hasher类

UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
UserManager.PasswordHasher = new CustomPasswordHasher(); // IPasswordHasher
UserManager UserManager=新的UserManager(商店);
UserManager.PasswordHasher=新的CustomPasswordHasher();//IPasswordHasher
对于第二个问题,Asp.net身份中的用户和角色管理没有秘密。有一个用户表(AspnetUsers)、一个角色表(AspnetRoles)和一个连接这两个角色的联接表(AspnetUserRoles)。因此,要从旧数据库迁移用户,可以使用SQL脚本在这些表中插入用户、角色及其关系


但是,请查看我建议的分步教程,我确信这将避免您在迁移过程中可能遇到的一些其他问题。

回答第一个问题

问题是,最初您使用了代码优先的方法,这是在创建注册第一个管理员用户时的默认方法,它将自动在App_数据文件夹中的localDB中创建所有必需的表。然后EntityFramework(asp.net标识框架的ORM)将跟踪本地数据库的数据库迁移

更改数据库连接后,需要使用代码优先数据库迁移来更新代码和数据库。(如果尚未更改表名)

使用以下链接了解迁移,您可以使用包管理器控制台使用“更新数据库”命令来完成迁移

第二个问题

没有任何Microsoft现成的解决方案用于管理Identity Framework用户。但您可以使用Thinktecture IdentityManager nuget软件包来实现此目的,如以下链接中所述

如果您还有其他问题,请告诉我

希望这有帮助