Как иметь двух разных типов пользователей для WebAPI и MVC .netcore 2.0 - PullRequest
0 голосов
/ 06 мая 2019

Я создаю приложение asp.net core 2.0 (с EFCore a Identity), которое имеет:

  1. веб-сайт (MVC), где люди могут зарегистрироваться и купить разные планы (с разными ценами и т. Д.)).Таким образом, эти пользователи должны подтвердить электронную почту и добавить другую информацию, чтобы иметь возможность использовать ее службы, включая создание и управление пользователями мобильных приложений.
  2. Мобильное приложение с бэкэндом WebAPI.Пользователи приложения - это работники, которые переходят от клиента к клиенту, добавляя информацию, которая должна быть собрана на месте в приложение.Эта информация получена пользователями сайта.

Итак, я вижу, что есть два разных типа пользователей: только один из них когда-либо будет использовать сайт, и нуждается (больше?) В безопасностипоскольку ему требуется подтвержденное электронное письмо на случай, если он забудет пароль и т. д. Кроме того, эти пользователи смогут просматривать все отчеты и (конфиденциальную) информацию, собранную мобильным приложением.Эта аутентификация основана на использовании файлов cookie.

С другой стороны, пользователи мобильных приложений никогда не будут иметь доступа к информации, отличной от той, которую они сами вводят, и их электронные письма не нужны.Им просто нужно имя пользователя и код / ​​пароль, выданные пользователем сайта.И эта аутентификация является токеном на предъявителя.

Я бы предпочел сделать все это в одном проекте, поэтому мой вопрос заключается в том, как я могу обрабатывать эти два типа пользователей (и процессы аутентификации) в одном проекте?

Я читаю документы по схемам авторизации, утверждениям, фильтрам, атрибутам безопасности, настройке startup.cs.Я считаю, что справился бы с этим, если бы это была просто разница в роли.И вопросы, которые я искал здесь, о различных типах пользователей, казалось, были действительно о ролях, но мой случай, я не думаю, что это может быть обработано таким образом.Например, пользователи мобильных приложений не будут ни регистрироваться, ни обрабатывать пароли и т. Д., Все это будет управляться пользователями веб-сайта, которые имеют, скажем, «полную учетную запись».

По запросу я могу опубликовать некоторый код,но что мне действительно нужно, так это некоторые рекомендации, например:

  • не делайте этого в одном проекте, сделайте два, один для MVC и один для WEBAPI и обрабатывайте различные параметры безопасности / авторизации /регистрация касается каждого;

  • или: Вам необходимо создать два разных класса "AppUser" и (в этом случае, как настроить Identity / что я добавлю в startup.cs?)

Я нашел это: https://medium.com/agilix/asp-net-core-supporting-multiple-authorization-6502eb79f934

Но здесь все еще не хватает информации о разных пользователях.Вполне возможно, что я прочитал в документации Microsoft и других местах информацию, которая мне нужна для этого, но я не могу собрать все это вместе - например, я знаю, как создать и зарегистрировать пользовательский класс пользователя в Identity, я понимаю, какдобавить фильтры и атрибуты в конвейер MVC, и я думаю, что мне нужно все это, чтобы выполнить то, что мне нужно, но я не могу шаг за шагом понять, что мне нужно делать.

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Вы можете легко достичь этого, используя ASP.net Core Authorization и Authenitcation.Если вы также используете Entity Framework Core, у вас будет большая помощь в настройке всех форм справки в веб-приложении.

Ключом для вас является установка 2 разных ролей.Один для мобильного приложения и один для веб-приложения.В разделе входа в систему вы проверяете эту роль, и, если пользователь находится в правильной роли, вы разрешаете пользователю доступ к приложению.У вас есть много информации об этом в Интернете, и вы найдете много помощи, если вы будете искать "Авторизация на основе основных ролей mvc".

При таком подходе вы также легко создадите в веб-приложении раздел администратора для работы с пользователями мобильного приложения, где вы сможете добавлять новых пользователей и обрабатывать их пароли.

Вы теряете некоторый контроль над своими столами, когда используете этот подход, но зачем изобретать колесо, если вам это не нужно?

Удачи!

0 голосов
/ 06 мая 2019

Я думаю, вам просто нужно иметь одно определение пользователя для доступа мобильного пользователя к веб-API. Этот пользователь не будет авторизован для веб-приложения. Вам просто нужно убедиться, что когда веб-API-вызов выполняется из вашего мобильного приложения, он влияет только на связанные данные веб-пользователя. Я предполагаю, что именно для этого выдан код / ​​пароль.

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