Каковы плюсы и минусы использования asp.net членство?

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

Я видел, что все хранится в XML-файле.

Я хотел бы знать, каковы плюсы и минусы членства вместо того, чтобы строить что-то с нуля.

6 ответов


решение MS login состоит из нескольких частей.

аутентификация - "кто может получить доступ к вашему сайту"

Проверка Подлинности С Помощью Форм - это в основном создает безопасный cookie, который говорит: "Я аутентифицирован!- по любой просьбе. Без этого пользователям пришлось бы регистрироваться на каждой странице.

  • плюсы: это хорошо работает
  • минусы: нет - используйте ее

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

  1. использование SqlMembershipProvider - Microsoft предоставляет вам базу данных для безопасного хранения пользователей / паролей и дает вам способ аутентификации учетных данных.
    • плюсы:
      • меньше/нет пользовательского кода для поддержания. Работает "из коробки"
      • работает с элементами управления членством и В API
    • минусы:
      • вы должны использовать Sql Server и использовать их схему базы данных. (не проблема ИМО)
      • нет контроля над тем, как пароли изначально создан. Они длинные и уродливые!--10-->
      • круче кривой обучения, как вы познакомитесь с технологией
  2. создание пользовательского MembershipProvider - вы можете наследовать от MembershipProvider для настройки где и как вы храните свои данные.

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

    • плюсы: полный контроль
    • минусы:
      • вы создаете все, но должны отлаживать / поддерживать все.
      • вы должны сами контролировать безопасность учетных данных.
      • не могу использовать элементы управления членством (это не большая потеря, так как элементы управления довольно просто копировать)
      • не может использовать API членства

авторизация- " что могут сделать пользователи?"

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

  1. использование SqlRoleProvider - Microsoft предоставляет вам базу данных для хранить роли

    • плюсы:
      • работает с web.config
      • пользователю можно назначить несколько ролей
    • минусы:
      • роли - это просто строка, без поддержки "иерархии разрешений". Это может затруднить создание правил, вокруг которых пользователи могут редактировать других пользователей.
  2. создание пользовательского RoleProvider - вы можете наследовать от RoleProvider, чтобы настроить, где и как вы храните свои данные.

    • плюсы: работает с web.config
    • минусы:
      • должны реализовать свое собственное решение для хранения
      • все еще просто строка и так же ограничены, как и предыдущее решение
      • если вы не реализуете его правильно, он может выполнять много вызовов базы данных.
  3. создание собственной аутентификации схема

    • Pros: полный контроль-просто сделайте пользовательские проверки на своей странице и ошибку / перенаправление по мере необходимости
    • минусы:
      • не работает с механизмом авторизации, предоставляемым в интернете.конфигурации / Карта сайта. Практически это означает, что добавление страницы в папку (например, /Admin) больше не гарантирует безопасность на этой странице.

важно отметить, что членство и роль поставщики могут быть выбраны или настроены независимо друг от друга. Я бы лично рекомендовал использовать SqlMembershipProvider, если вы можете, и оценить свои параметры для поставщика ролей.


Мне не нравится использовать поставщика членства.

Это util, когда сценарий "стандартный", но в случаях, когда вам нужно больше пользовательских правил, я думаю, что это не работает хорошо. Появляются "обходные пути".

и не нужно хранить в XML, существует другое решение (база данных, для exmaple).


плюсы:

  • ваше предпочтительное хранилище данных может не полностью поддерживаться из коробки

  • Он может не соответствовать вашим текущим или будущим потребностям

  • возможно, вы не до конца понимаете тонкости того, как это работает (над чем-то, что вы построили сами)

плюсы:

  • вы могли бы сэкономить время по сравнению с обновлением собственный.

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


хорошая вещь о ASP.Net членство в том, что вы можете использовать столько или столько, сколько хотите - вы можете хранить пользовательские данные в различных формах( как упоминалось другими), или вы можете просто использовать ASP.Net членство для обработки авторизации сеанса и защиты страницы.

например, вы можете пойти весь боров и использовать элемент управления login, sqlmembershipprovider back end и просто позволить ASP.Net членство делает все от начала до конца.

или вы можете хранить свои логины и пароли в вашей собственной таблице базы данных аутентифицируют предоставленные данные самостоятельно, а затем просто используют "FormsAuthentication.RedirectFromLoginPage () " рассказать ASP.Net членство, которое пользователь аутентифицирует и имеет ASP.Net членство затем контролировать доступ к страницам.

ASP.Net членство опробовано и протестировано, его используют тысячи сайтов внутри и за пределами Microsoft, поэтому вы знаете, что код работает и работает хорошо. Если есть проблема, то есть много реализаций там, кто найдет его. Ваш собственный подход имеет только одного пользователя...


на самом деле, все не nessicarily хранится в XML-файле. Вы можете хранить membershipdata несколькими способами, включая базу данных.

вы также можете использовать ASP.NET роли/библиотека членства в качестве отправной точки для сворачивания собственных. Есть несколько учебных пособий по этому вопросу.

плюсы с использованием встроенных функций в том, что ASP.NET членство gui-контролирует более или менее "просто работу".. ;)


на мой взгляд, поставщики членства .NET-отличный способ пойти независимо. Я написал довольно много больших приложений, используя их. Если ваша архитектура хороша, довольно просто добавить функциональность и изменить данные в будущих выпусках.

вот немного контекста, чтобы сформулировать мои ответы. Решения членства / роли / профиля в .NET состоят из двух частей: платформы и поставщиков. Структура состоит из методов и информации, которую ваша программа будет взаимодействовать. Поставщики определяют, как будут храниться данные.

Я считаю, что база отличная. Нет ничего, что вы не можете сделать, независимо от того, как вы хотите взаимодействовать с ним. Реализации по умолчанию дают вам много бесплатно. Любое отсутствие функциональности дополнительно смягчается как мошенничество, если вы используете хорошие методы кодирования. Смотрите стартер ASP.NET приложение MVC для отличного примера упаковки структуры членства.

данные никогда не получается так, как ты хочешь, но ничего такого, с чем ты не можешь справиться. Во-первых, как сказали люди, есть куча поставщиков, поставляемых С. Сеть. И это также, где реализация вашего собственного провайдера вступает в игру. Обычно мы начинаем с подклассов объекта sqlmembershipprovider. Если что-то не работает так, как мы хотим, мы переопределить это. И изменение таблиц данных в более позднее время, если это необходимо не очень сложно.

использование того, что уже существует, всегда кажется чтобы мы могли быстро адаптироваться. По правде говоря, изменения в этом коде происходят не часто. Использование решения Microsoft в начале может не привести к самой красивой работе, но она быстро выполняет свою работу и позволяет перейти к решению важных проблем.