Как установить связь между многими пользователями ASP.NET Identity Core и настраиваемой внешней таблицей? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть проект ASP.NET Core 2.1, на котором запущен IdentityServer4 поверх ASP.NET Identity Core, как описано здесь .Этот проект имеет свою собственную отдельную базу данных SQL Server для хранения таблиц ASP.NET Identity Core.

Затем у меня есть несколько других проектов, в том числе API-интерфейс ASP.NET Core 2.1, который защищен IdentityServer.Эти проекты взаимодействуют с другой базой данных SQL Server, которая содержит все данные, специфичные для веб-приложения.

Я хочу выразить отношение «многие ко многим» между пользователями (живущими в базе данных IdentityServer) и арендаторами (живущими в приложении).база данных).

Я думаю о нескольких возможностях:

  1. Добавить одну или несколько заявок каждому пользователю, указав доступ к арендаторам.Таким образом, в основном каждый пользователь будет иметь утверждение типа tenant со значением, являющимся идентификатором клиента.
    Поэтому, когда мне нужно получить все клиенты, к которым пользователь имеет доступ в API, я могу просто сделать IEnumerable<Claim> tenants = User.FindAll("tenant").
    Это кажется "грязным", потому что документация гласит:

Заявка - это пара имя-значение, которое представляет собой субъект, а не то, чтоСубъект может сделать.

Другим вариантом может быть наличие таблицы «Пользователи» в базе данных приложения, в которой каждая запись имеет ссылку на идентификатор пользователя ASP.NET Identity Core.И из этой таблицы создайте нормальное отношение «многие ко многим» в базе данных приложения.
Это упрощает управление, но мне нужно было бы установить соответствие 1-1 между пользователем в базе данных IdentityServer ив базе данных приложения.

Можете ли вы придумать лучший способ решить эту проблему?Если нет, вы бы выбрали вариант 1 или 2?

...