如何使用ASP-5 / MVC-6 / Identity 3为自定义Asp.Net标识存储提供程序注册中间件

时间:2015-06-24 08:44:47

标签: asp.net-core asp.net-core-mvc asp.net-identity-3

我正在尝试使用默认的MVC6模板升级Asp.Net Identity 2'自定义存储提供程序'以使用Visual Studio 2015中的Identity 3 beta 4。

我在学习如何使用ASP5中间件注册Asp.Net Identity 3自定义存储提供程序时遇到了困难。

目前我已完成以下操作,但不确定是否正确:

services.AddIdentity()
 .AddRoleStore>()
 .AddUserStore>()

 .AddDefaultTokenProviders();

我不确定我是如何注册数据库上下文的?

在我的项目中称为MySQLDatabase.cs

我找不到任何文件。

注册Identity.EntityFramework中间件似乎与自定义存储提供程序的方式不同。

运行默认MVC6模板并点击“注册”按钮时收到以下错误:

“InvalidOperationException:尝试激活'Bondii.Identity.MySQL.UserStore`1 [Bondii.Identity.MySQL.IdentityUser]'时,无法解析类型'Bondii.Identity.MySQL.MySQLDatabase'的服务。”

我的代码包括完整项目:

GitHub存储库看我的代码是: https://github.com/simonpbond/bondii.identity.mysql

基于身份2的原始'自定义存储提供程序教程 - 我正在尝试升级到Identity 3: http://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage-provider

原始示例代码: https://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/AspNet.Identity.MySQL/

1 个答案:

答案 0 :(得分:0)

在你的startup.css中你需要这样的东西:

 services.AddTransient(_ => new MySQLDatabase());

在:

 services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddRoleStore<MySQL.RoleStore<IdentityRole>>()
            .AddUserStore<MySQL.UserStore<IdentityUser>>()

            .AddDefaultTokenProviders();

这将为您提供我相信的每个请求的数据库连接,并将由DI传递给您的商店的构造函数。

这可能不是最好的方法,将某种工厂作为单身人士传递可能会更好,但这应该按照你设置的方式工作。