是的,所以..我想我很困惑!
我有几个使用ASP.NET Identity 2.1运行的ASP.NET MVC 5站点,一切都很棒。我正在创建一个新的MVC 6站点,我希望用户使用他们用于其他系统的现有凭据。我已经尝试了以下内容:
我只是想知道我的选择是什么,因为新版本的文档不是很好,我得知数据库中有DDL更改但我希望有一种方法可以让我的MVC 5网站随身携带随着.NET身份3数据库向后兼容2.1。
我的另一个选择是升级MVC 5应用程序以使用Identity 3,而我认为这意味着将它们更新为MVC 6,这是我真正没有资源的东西,或者拥有一个全新的Identity数据库(这似乎是最简单的选择)。
任何意见都会有所帮助,毫无疑问我错过了一些细节,如果有人对此设置有任何进一步的问题,请填写空白。
答案 0 :(得分:2)
我做了同样的事情,这是一项很大的努力 - 你必须运行数据库迁移,但首先是
新 ASP Identity V3表&迁移
新 ASP Identity V3字段
配置表格 在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选项是指定目标文件夹而不是根文件夹)答案 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;
});