Store не реализует IUserRoleStore <TUser>ASP.NET Core 2.1 Identity - PullRequest
0 голосов
/ 26 сентября 2018

Я использую удостоверение ASP.NET Core 2.1.Я переопределил IdentityUser, потому что мне нужно добавить некоторые дополнительные свойства для пользователя.

В Startup.cs

services.AddDefaultIdentity<PortalUser>().AddEntityFrameworkStores<ApplicationDbContext>();

ApplicationDbContext.cs

public partial class ApplicationDbContext : IdentityDbContext<PortalUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {

    }
}

Класс PortalUser

public class PortalUser : IdentityUser
{
    [PersonalData]
    public DateTime? LastLoginDateUtc { get; set; }

    [PersonalData]
    public DateTime? RegistrationDateUtc { get; set; }
}

Все работает нормально.Я могу добавить пользователя через.

_userManager.CreateAsync(user)

Однако, когда я вызываю AddToRolesAsync для добавления роли пользователю, я получаю исключение.Есть идеи почему?

_userManager.AddToRolesAsync(user, new List<string> { roleName });

{System.NotSupportedException: Store does not implement IUserRoleStore<TUser>.
   at Microsoft.AspNetCore.Identity.UserManager`1.GetUserRoleStore()
   at Microsoft.AspNetCore.Identity.UserManager`1.AddToRolesAsync(TUser user, IEnumerable`1 roles)}

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Я знаю, что автор уже исправил свою проблему, но я добавлю это для всех, кто проделал все шаги в ответе выше и все еще имеет эту ошибку.

От Aspnet github

Необходимо удалить автоматически сгенерированный метод IdentityHostingStartup.Configure в Области / Identity / IdentityHostingStartup.cs

0 голосов
/ 27 мая 2019

Поскольку в asp.net Core 2.2 нет ответов о решении, я хотел бы поделиться той же ошибкой, с которой я сталкиваюсь в asp.net Core 2.2

Во-первых, вот еще одно решение для той же ошибки в asp.net core 2.1 https://github.com/aspnet/AspNetCore.Docs/issues/8683

И благодаря идее автора я встречаю проблему, когда следую официальномуруководство по asp.net core 2.2 (адрес здесь: MicrosoftDocs для asp.net core 2.2 ).Когда я заканчиваю шаг, который он говорит, и пытаюсь запустить проект, он выдает исключение «Store не реализует IUserRoleStore»

, и проблема в том, что на самом деле это пример для asp.net core 2.1 (И я сильно сомневаюсь, почему Microsoft предоставит пользователям документы, а не примеры кодов, что, вероятно, не имеет смысла)

И вы найдете это в Области /Identity / Data / IdentityHostingStartup.cs IdentityHostingStartup :: Configure метод у вас есть следующие коды:

services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<ApplicationDbContext>();

, который совпадает с кодом, который вы должны добавить в / Program.cs ConfigureService как шаг: Добавьте службы ролей в Identity в упомянутых документах:

services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

, поэтому, если вы столкнетесь с той же проблемой в ядре asp.net 2.2, альтернативное решение:

  1. В соответствии с документами в asp.net 2.2
  2. Если вы встречаетесь с этой главой: Добавьте службы ролей в Identity , просто игнорируйте официальные документыи сделай это:

заменить строку

services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<ApplicationDbContext>();

на

services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

в Области / Identity / Data / IdentityHostingStartup.cs IdentityHostingStartup :: Configure , но методне добавлять его в program.cs (файл не может быть удален в ядре asp.net 2.2)

Проект, который я использую Asp.net, будет обновлен позже в моих репозиториях: UWPHelper Удачи:)

0 голосов
/ 26 сентября 2018

В Startup.cs мне не хватало AddRoles, поэтому

services.AddDefaultIdentity<PortalUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

должно быть

services.AddDefaultIdentity<PortalUser>()
    .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

Примечание. Порядок является критическим.AddRoles должно прийти раньше AddEntityFrameworkStores

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...