Путь к обновлению. net Членство - PullRequest
0 голосов
/ 14 апреля 2020

Я поддерживаю унаследованное приложение веб-форм с бэкэндом SQL и пытаюсь обновлять его постепенно, я обновился до. NET 4.6 (максимум, который позволяет хостинг-провайдер), добавил немного jQuery, EF 6 совершенство В общем, рефакторинг и попытка сначала переключиться на код с базы данных, сначала edmx, мой следующий план - начать создавать новые функции с использованием некоторой библиотеки интерфейса, такой как Vue. Но ...

Моя проблема на данный момент - членство. Он используется во всем коде, и такие операторы, как

new Guid(Membership.GetUser().ProviderUserKey.ToString())

, буквально слишком много, чтобы их вынести.

И в базе данных есть 10 таблиц и 9 представлений.

vw_aspnet_Applications
vw_aspnet_MembershipUsers
vw_aspnet_Profiles
etc..

Приложение использует его для аутентификации и для отслеживания того, что пользователь делает, что.

Есть ли способ обновить это до современного решения без особых хлопот? Я могу потратить усилия из своего времени, но я бы предпочел решение, которое не является чрезмерным. количество пользователей, вероятно, меньше 20, поэтому альтернатива не должна быть сложной. Он просто должен поддерживать большую часть того, что делает Членство.

Я немного поиграл с Auth0 в свое время, но, похоже, для этого он не подходит. Также есть идентификация MS, но я бы предпочел посоветоваться, прежде чем идти в кроличью нору.

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Определенно нет простого обновления. Вот что мы сделали в нашем случае.

  • Создано ASP. NET Идентификационные таблицы. Мы сделали его похожим на таблицу Membershipusers, а затем перенесли всю таблицу.

  • Добавлено ApplicationUser, ApplicationRole,ApplicationUserManager , ApplicationSignInManager, ApplicationDbContext

  • Реализация Autofa c для определенного DI на Startup.cs.

  • Работал с классами контроллеров входа / регистрации.

  • Окончательно перенес всю базу данных членства в новую таблицу aspnetusers.

Приложение изначально разрабатывалось с использованием NOPCommerce (asp. net веб-формы) и было заменено с Membership.GetUser().ProviderUserKey.ToString() на User.Identity.GetUserId()

.
1 голос
/ 28 апреля 2020

без проблем? Вы имеете в виду легкий путь (или) масштабируемый путь?

Дизайн - это скорее мнение, а не цель. В основном это основано на фактах, которые известны о постановке проблемы. Исходя из ваших, я бы порекомендовал следующее.

  1. Разделить весь код, связанный с членством, в библиотеку (если это еще не сделано)
  2. Теперь напишите интерфейсы, которые абстрагируют реальный механизм аутентификации от код, связанный с кораблем участника в вашем проекте. Таким образом, ваш код не нужно менять ни для какого механизма аутентификации. Это также не потребует изменения схемы базы данных.
  3. Теперь для реальной аутентификации используйте что-то вроде Auth0 (https://auth0.com/blog/add-auth-to-native-desktop-csharp-apps-with-jwt/), что-то вроде этого будет легко реализовать. Но я не знаю, является ли ваш коммерческий проект / как будет работать лицензирование. Я знаю, что есть бесплатная версия для auth0, но я прошу вас проверить ее.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...