我是 ASP.NET 身份的新手,我仍在努力了解它是如何工作的。不幸的是,我发现我尝试过的许多教程都是针对 Identity 1.0 的,而我正在尝试使用 Identity 2.0。
我面临的最大问题是我认为很简单,但事实证明并非如此。我想要做的是使用现有的数据库和现有的用户表。目前,我似乎所能做的就是让 Identity 创建它自己的表来存储用户数据。我不想使用 Entity Framework,但我很难将 Entity Framework 与 Identity 2.0 分开。
在我使用 SQL Server 的情况下,我想我会尝试在此链接上实现 MySQL 的自定义提供程序:http ://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql -aspnet-identity-storage-provider和https://github.com/raquelsa/AspNet.Identity.MySQL。这似乎仅适用于身份 1。似乎确实有一个更新的,但是它使用实体框架。我也试过https://github.com/ILMServices/RavenDB.AspNet.Identity。
通过我尝试过的一切,我陷入了以下行:
var manager = new IdentityUserManager(new UserStore<IdentityUser>(context.Get<ApplicationDbContext>()));
我面临的问题是我需要根据 RavenDB 的说明删除 ApplicaitonDbContext 类,但是我不知道在这一行中放什么。
我得到的错误是:
非泛型类型“AspNet.Identity.MySQL.UserStore”不能与类型参数一起使用
和
找不到类型或命名空间名称“ApplicationDbContext”(您是否缺少 using 指令或程序集引用?)
第二个错误是意料之中的,但是我不确定在这行代码中使用什么。有没有人在不使用实体框架的情况下实现自定义提供程序的经验?
谢谢。
更新1:
我尝试了以下教程 [ http://aspnetguru.com/customize-authentication-to-your-own-set-of-tables-in-asp-net-mvc-5/ ] 但它似乎不完整,完全遵循本教程时出现编译或运行时错误。我还有几个问题是...
将“ApplicationUser”的所有实例替换为“User”时,IdentityConfig.cs 中的以下行出现问题
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<MyDbContext>()));
将 ApplicationUser 更改为 User 会产生以下错误
类型“WebApplicationTest2.Models.User”不能用作泛型类型或方法“Microsoft.AspNet.Identity.EntityFramework.UserStore”中的类型参数“TUser”。没有从“WebApplicationTest2.Models.User”到“Microsoft.AspNet.Identity.EntityFramework.IdentityUser”的隐式引用转换。
我也很难弄清楚如何使用用户管理器和许多异步方法。以下行不起作用:
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager));
在 AccountController.cs 中出现以下错误:
'Microsoft.Owin.Security.IAuthenticationManager.SignIn(Microsoft.Owin.Security.AuthenticationProperties, params System.Security.Claims.ClaimsIdentity[])' 的最佳重载方法匹配有一些无效参数。
“WebApplicationTest2.Models.User”不包含“GenerateUserIdentityAsync”的定义,并且找不到接受“WebApplicationTest2.Models.User”类型的第一个参数的扩展方法“GenerateUserIdentityAsync”(您是否缺少 using 指令或程序集引用?)