. net основной идентификатор пользователя для аутентификации на сайте и cms - PullRequest
0 голосов
/ 28 апреля 2020

Какова наилучшая практика для поддержки регистрации учетной записи пользователя и входа в систему для пользователей веб-сайта (клиента), а также для поддержки учетных записей пользователей cms / входов администратора с использованием отдельной службы идентификации пользователей как для сайта, так и для cms в одном проекте?

Чтобы оценить, как этот сценарий может работать, я создал тестовый проект mvc. net core 3.1, который использует Piranha CMS, который, в свою очередь, использует службу идентификации пользователя для управления аутентификацией для доступа к cms. панель администратора, соедините это с сайтом mvc, также поддерживающим идентификацию пользователя для отдельных учетных записей для клиентов / пользователей веб-сайта для регистрации / входа.

Ниже приведен пример метода класса ConfigureServices для запуска, иллюстрирующий настройку как cms, так и веб-сайта, использующего службу идентификации пользователя, в настоящее время это приводит к ошибкам при запуске с сообщением - System.InvalidOperationException: «Схема уже существует: Identity.Application»

    // CMS Setup
        services.AddPiranha(options =>
        {
            options.UseFileStorage();
            options.UseImageSharp();
            options.UseManager();
            options.UseTinyMCE();
            options.UseMemoryCache();
            options.UseEF<SQLServerDb>(db => db.UseSqlServer(Configuration.GetConnectionString("db-cms-users")));
            options.UseIdentityWithSeed<IdentitySQLServerDb>(db => db.UseSqlServer(Configuration.GetConnectionString("db-cms-users")));
        });

    // Site Setup
        services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("db-site-users")));
        services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<ApplicationDbContext>(); 

Проблема с приведенным выше кодом факт если идентификатор пользователя используется как для cms, так и для сайта, и это конфликтует из-за того, что для обоих используется удостоверение «по умолчанию», есть ли способ обойти эту проблему и при этом поддерживать как cms, так и веб-сайт для пользователя / учетных записей.

Таким образом, мой вопрос, что оба они вместе в одном проекте выглядят не очень хорошо, и я хотел бы знать в этом сценарии, как лучше всего поддерживать веб-проект, использующий как cms, так и поддерживаемый сайт. с идентификатором пользователя и / или если это вообще возможно в этом контексте?

1 Ответ

0 голосов
/ 30 апреля 2020

Управление пользователями в Piranha полностью абстрагировано, так что вы можете фактически аутентифицировать пользователей CMS любым удобным для вас способом. Пакет Identity, включенный в шаблоны, включен в качестве стандартного образца, поскольку большинство пользователей используют единую настройку безопасности на основе ASP. NET Identity. Единственное, о чем менеджер заботится при входе в систему, это:

  1. что он находит зарегистрированную службу, реализующую Piranha.ISecurity (https://github.com/PiranhaCMS/piranha.core/blob/master/core/Piranha/ISecurity.cs)
  2. что пользователи получают необходимые требования после входа в систему (https://piranhacms.org/docs/architecture/authentication)

Настройка удостоверения

Код, предоставленный в шаблонах, просто устанавливает стандартные параметры удостоверения , но вы можете переопределить все, чтобы делать то, что вы хотите. Метод UseIdentityWithSeed<T> может фактически принимать еще два параметра для настройки как IdentityOptions, так и CookieOptions для работы любым способом. Взгляните на эту страницу для справки:

https://piranhacms.org/docs/architecture/authentication/identity

Аккаунты пользователей в Piranha

Если вы только хотите добавить конечный Учетные записи пользователей где-то это можно сделать в Piranha CMS, настроив новые роли в администраторе и добавив необходимые политики приложений. Вы можете прочитать об этом здесь:

https://piranhacms.org/docs/tutorials/securing-pages

Дополнительные рекомендации по нескольким схемам аутентификации

Я никогда не развертывал сайт с такой настройкой , но как всегда я знаю, что кто-то имеет :) Эта проблема на GitHub говорит именно об этом, и установка прошла успешно. Поскольку я не могу дать конкретное c руководство по этому сценарию, возможно, обращение к пользователю в этой теме может дать вам то, что вам нужно!

https://github.com/PiranhaCMS/piranha.core/issues/627

Не будучи ответом , я надеюсь, что это даст вам то, что вам нужно, чтобы найти ответы.

С уважением

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