Я новичок в идентификации 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. Кажется, что это работает только в Identity 1. Кажется, что он более новый, но использует Entity Framework. Я также пробовал https://github.com/ILMServices/RavenDB.AspNet.Identity.
Со всем, что я пробовал, я застрял в следующей строке:
var manager = new IdentityUserManager(new UserStore<IdentityUser>(context.Get<ApplicationDbContext>()));
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно удалить класс ApplicaitonDbContext в соответствии с инструкциями для RavenDB, однако я не знаю, что помещать в эту строку.
Я получаю следующие ошибки:
Не общий тип "AspNet.Identity.MySQL.UserStore" не может использоваться с аргументами типа
и
Не удалось найти имя типа или пространства имен 'ApplicationDbContext' (вам не хватает директивы using или ссылки на сборку?)
Ожидается вторая ошибка, однако я не уверен, что использовать в этой строке кода. Кто-нибудь имел опыт внедрения пользовательского поставщика без использования Entity Framework?
Спасибо.
Обновление 1:
Я попытался выполнить следующий учебник [http://aspnetguru.com/customize-authentication-to-your-own-set-of-tables-in-asp-net-mvc-5/], но он оказался неполным, с ошибками компиляции или времени выполнения, точно следуя инструкциям. Несколько проблем, которые у меня есть, - это...
При замене всех экземпляров "ApplicationUser" на "Пользователь" есть проблема со следующей строкой в IdentityConfig.cs
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<MyDbContext>()));
Изменение ApplicationUser для пользователя вызывает следующую ошибку:
Тип "WebApplicationTest2.Models.User" не может использоваться как параметр типа "TUser" в универсальном типе или методе "Microsoft.AspNet.Identity.EntityFramework.UserStore". Нет никакого неявного преобразования ссылок из "WebApplicationTest2.Models.User" в "Microsoft.AspNet.Identity.EntityFramework.IdentityUser".
Я также затрудняюсь с тем, как использовать пользовательский менеджер и многие методы ASync. Следующие строки не работают:
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 "и не используется метод расширения" GenerateUserIdentityAsync", принимающий первый аргумент типа "WebApplicationTest2.Models.User" (вам не хватает директивы using или ссылка на сборку?)