Я использую ядро asp.net с JWT для авторизации на основе утверждений. Каждый запрос к API сопровождается некоторым ключом, который сообщает мне, с каким именем базы данных связан этот запрос, все базы данных имеют одинаковую схему, пользователь может бытьв одной или нескольких базах данных.
Мой вариант использования:
- Создание токена входа в систему путем доступа к API через базу данных 1 (пользователь A существует в базе данных 1).
- Используйте токен того же пользователя, чтобы снова получить доступ к API, но на этот раз через базу данных 2 (пользователь A не существует в базе данных 2), но он все еще может получить доступ к API, поскольку его токен имеет требуемую заявку.
это то, как я меняю строку подключения для каждого запроса
services.AddDbContext<AppDbContext>((serviceProvider, options) =>
{
var httpContext = serviceProvider.GetService<IHttpContextAccessor>().HttpContext;
if (httpContext != null)
//options.UseSqlServer("newConStr");
}
Как я могу убедиться, что пользователь принадлежит к текущей базе данных, разумеется, без необходимости писать ручные проверки.