Управление пользователями с помощью ядра asp.net, сервера идентификации 4 и SPA - PullRequest
0 голосов
/ 11 июня 2019

Я решил создать проект, внешний интерфейс в Vue, внутренний API в .net core и Identity Server 4.

На основе шаблона чистой архитектуры мне нужно разделить свое решение на проекты: - идентификационный сервер - API - инфраструктура (структура и модели объектов) - ядро - приложение Vue

Я настроил проект для работы с объектами в памяти и успешно вошел в систему с внешними учетными записями и локальными учетными записями alice / bob.

Теперь мне нужно создать миграции для создания базы данных, в которой будут храниться эти пользователи (и другие объекты).

ДО включения сервера идентификации в проект: Я создал библиотеку классов для проекта инфраструктуры, включая EF и Identity (не сервер идентификации, а идентификатор), и на данный момент у меня есть модели и ApplicationDbContext, также модель ApplicationUser, которая наследует IdentityUser (в целях расширения таблицы AspNetUser с помощью моего собственные свойства). Миграции папок содержат только init для базы данных, в которой таблицы идентичности создаются с другими моделями. В моем проекте api (startup.cs) я зарегистрировал ApplicationDbContext в качестве службы и создал базу данных.

ПОСЛЕ включения сервера идентификации в проект: Identity Server, из JS Client QuickStart, я мог войти, но с использованием пользователей в памяти или внешнего входа. Теперь я хочу, чтобы мое приложение работало с одной базой данных.

Я прочитал это: http://docs.identityserver.io/en/latest/quickstarts/7_entity_framework.html И успешно удалось создать миграции в проекте сервера идентификации (хотел те, что в инфраструктуре, но ...), обновить базу данных, и теперь у меня есть база данных с таблицами идентификации (AspNetUser, AspNetRoles ...) и новыми таблицами, сгенерированными с сервера идентификации (клиенты, ClientScopes ...) с моими старыми моделями для проекта.

Мой API еще не имеет никаких контроллеров, кроме ValuesController, мой IdentityServer Quickstart имеет контроллеры, представления и модели представления для учетной записи, согласия, устройства, диагностики, предоставления и дома, а моя библиотека классов инфраструктуры имеет EF (контекст и модели) с миграциями.

При запуске API я добавляю ApplicationDbContext в качестве службы со ссылкой на проект инфраструктуры, а имя MigrationsAssembly - Инфраструктура. При запуске сервера Identity я добавляю хранилище конфигурации и хранилище операций с теми же параметрами (строка подключения к той же базе данных, что и API и инфраструктура).

Когда в моем приложении vue я использую iodc-client, который связывается с сервером Identity в качестве прав доступа, я установил для маршрутов своего приложения аутентификацию, и если ни один пользователь не вошел в систему, вы будете перенаправлены на сервер идентификации / account / login стр. Отображается с двумя вариантами: локальный вход в систему и внешний вход в Google, а при входе в систему внешним способом пользовательский объект не добавляется в базу данных. Я еще не создал регистрацию, поэтому при использовании учетных записей Алисы / Боба (в памяти) они не записываются в базу данных. Клиент iodc входит в систему и может просматривать аутентифицированные маршруты.

Проблема: 1. Мне действительно нужны обе таблицы фреймворков? 2. Если я это сделаю, то в какую таблицу я (фреймворк) напишу своих пользователей и как мне получить этот класс в своем коде, чтобы я мог расширить его своими реквизитами? 3. Контроллеры не были изменены мной, они генерируются шаблонами, поэтому я думаю, что мне нужен способ заставить эти контроллеры работать с моим контекстом и EF для записи и сохранения изменений. Если да, то какая это ответственность? Создаю ли я еще один контроллер учетных записей в моем API, который будет запрошен для создания и записи этого пользователя, или есть какой-то способ с фреймворком, с которым я не знаком, так как я только изучаю Identity Server?

Заранее спасибо за чтение и за попытку понять. Извините за длинный пост.

...