Мне нужно разработать собственный RoleProvider для многопользовательского веб-приложения. На уровне БД у нас есть таблица, которая связывает пользователей с ролями с арендаторами.
Моя проблема в том, что RoleProvider получает роли пользователей, просто передавая User as параметр, и нам нужно принимать во внимание Tenant.
В реализации RoleProvider у нас есть:
public override string[] GetRolesForUser(string username)
{
//Code to retrieve roles from repo
}
Поскольку роли предназначены для пользователя в конкретном арендаторе, нам необходимы:
public override string[] GetRolesForUser(string username, int tenantId)
{
//Code to retrieve roles from repo
}
Текущий клиент хранится в классе ControllerBase (тот, от которого унаследованы все контроллеры).
Поставщики членства и ролей находятся в отдельном проекте, поэтому я не вижу способа использовать текущий клиент. Думаю, я мог бы создать свой собственный RoleProvider в проекте веб-приложения.
Есть идеи, как реализовать интерфейс RoleProvider, принимающий клиента как часть ввода?