Я новичок в идентификации 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» на «User» возникает проблема со следующей строкой в 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 или ссылки на сборку? ?)