Подтвердить что ты не робот

Альтернативы членству в .Net

Есть ли альтернативы \mods для .net Membership?

Я считаю это довольно ограничительным;

  • Невозможно изменить имя пользователя, легко. Вы должны создать нового пользователя и скопировать поля, но затем вы потеряете первичный ключ ИЛИ вам нужно самостоятельно отредактировать таблицу пользователя.

  • Дополнительные поля профиля сохраняются вместе как один blob.

4b9b3361

Ответ 1

Членство в ASP.Net использует модель поставщика. Это означает, что вы полностью свободны реализовать свой собственный поставщик членства или даже наследовать и расширять существующего поставщика, если вы следуете поставщику услуг.

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

Ответ 2

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

Проект называется Fast, Secure и Concise Authentication, или FSCAuth для краткости. Это лицензия BSD. Вы можете загрузить его через Binpress или Bitbucket

Гибкая модель "UserStore" (эквивалент поставщика услуг) позволяет вам в любом случае формировать вашу базу данных. Он может поддерживать текстовые файлы, XML, MongoDB, Sql Server, и где угодно между ними.

Вот список вещей, где, по моему мнению, он особенно отличается от проверки подлинности:

  • Система аутентификации без гражданства. Нет необходимости отслеживать пользовательские сеансы в базе данных или в памяти. Это делает тривиальным масштабирование до нескольких серверов, требующих незначительных (если есть) изменений в вашем коде аутентификации.
  • Используйте что-либо как уникальный идентификатор для каждого пользователя. Это право, не больше GUID! Все, что будет вписываться в строку, - это честная игра.
  • Исходная базовая аутентификация HTTP. Вы можете включить базовую проверку подлинности только на желаемых страницах (или в глобальном масштабе), и вы можете делать те же вызовы, как если бы они использовали типичную аутентификацию на основе файлов cookie
  • Трудно сделать небезопасным. Из-за того, как это работает, и я оставляю как можно меньше основного кода для конечного пользователя для фактической проверки подлинности, он чрезвычайно безопасен и останется таким, если только вы просто не попытаетесь его сломать. Я обрабатываю файлы cookie, HTTP Basic Auth и все хэширование. Вы просто даете FSCAuth базу данных для ее ввода.
  • Поддержка хэшей BCrypt тривиальна. Как это сделать.. В Autodesk Forms почти невозможно
  • Мне нравится:)

Конечно, этого также не хватает, и, честно говоря, я расскажу о нескольких вещах, которые отсутствуют

  • Аутентификация статических файлов в IIS 6 пока не представляется возможным.
  • Нет никакой грубой силы (пока). Это означает, что вам нужно убедиться, что один и тот же человек не пытается попасть на страницу входа 200 раз за 2 секунды.
  • Он не встроен в ASP.Net
  • Нет аутентификации в Windows или Passport (без каких-либо планов)

Ответ 3

Поскольку модель членства ASP.NET построена вокруг поставщиков, существует ряд альтернатив.

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

С точки зрения профиля, да, по умолчанию blob довольно раздражает. Вы можете посмотреть Поставщик профилей таблиц SQL, который отображает профили на таблицы или довольно быстро сканируйте свой собственный.

Ответ 4

Что касается изменения имени пользователя, это может быть легко достигнуто с помощью метода CreateNewUser() и заполнения соответствующих полей на основе текущего пользователя, а затем удаления текущего пользователя.

Поля профиля не являются частью модели .NET Membership Provider, а являются частью Провайдера профилей. Это очень дискуссионная тема, и для большинства производственных машин правильным решением является переход на более качественное решение поставщика услуг, например Поставщик профилей таблицы, в котором хранятся поля профиля, как вы ожидали, а не как blob-hogging. Кроме того, вы можете легко свернуть собственный поставщик профилей, ознакомьтесь с инструкциями .

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

Ответ 5

Что касается профиля, есть пара альтернатив . Эти два используют либо таблицу, либо вы можете вызвать хранимую процедуру. Конечно, вы также можете реализовать свои собственные. Я лично устал от использования Провайдеров профилей и обнаружил, что работать с профилем в моем коде было легче контролировать и содержать.

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